Linux Shell 脚本:将命令输出保存在变量/文件中?

Posted

技术标签:

【中文标题】Linux Shell 脚本:将命令输出保存在变量/文件中?【英文标题】:Linux Shell Script: Save command outputs in variable/file? 【发布时间】:2013-12-13 17:34:45 【问题描述】:

我想使用命令的一些输出,但我不知道如何将输出保存在变量或文件中。

脚本正在通过 telnet 连接到指定的服务器并执行不同的命令。其他命令需要一个命令。嗯...我必须从命令输出中保存这些信息。

我的代码:

    #!/bin/bash
    (
            echo open server portnumber
            sleep 2s
            echo "login username password"
            sleep 1s
            echo "use sid=1"

            CLIENT_LIST=$(echo "clientlist")

            sleep 1s

            echo "clientupdate client_nickname=Administrator"

            for client_id in $(echo $CLIENT_LIST | grep -Eo "clid=[0-9]+" | grep -Eo "[0-9]+"); do
                    echo "clientpoke clid=$client_id msg=How\sare\syou!"
                    sleep 1s
            done

            sleep 1s
            echo "logout"
            echo "quit"
    ) | telnet

我想将命令“clientlist”的输出保存在变量或文件中。变量将是最好的解决方案。但实际上该变量只是保存“clientlist”而不是命令的输出。 :(

我希望有人可以帮助我。提前致谢! :)

如果你想测试它:它是为 TeamSpeak 3 服务器制作的。

【问题讨论】:

【参考方案1】:

运行命令“clientlist”并将输出保存在变量中:

output_var=$(clientlist)

在 bash 或 sh 中,$(...) 语法表示“运行此命令并返回它产生的任何输出。”

【讨论】:

【参考方案2】:

如果这个问题的意思是“我想在远程机器上运行clientlist 命令,然后将其输出捕获到本地机器上的变量”,那么你不能使用类似脚本的东西来执行此操作。 (请注意,您编写的脚本仅将输入管道输入到 telnet 命令中;telnet 的输出不会在任何地方捕获。)

您需要使用expect 之类的内容编写脚本,或者使用另一种语言(例如Perl 或Python)编写脚本。

【讨论】:

啊,好吧。谢谢你。我将使用不同的命令执行此代码 3 次,并将 telnet 的输出保存在文件中。那行得通。我认为存在更好的解决方案。 :(

以上是关于Linux Shell 脚本:将命令输出保存在变量/文件中?的主要内容,如果未能解决你的问题,请参考以下文章

Shell基本脚本命令使用教程

Linux中export和source命令

Shell脚本

linux的shell编程中如何将一段命令的结果封装成一个变量?

linux shell脚本,怎样变量传递执行结果

Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)