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

时间:2013-11-27 21:19:32

标签: linux bash shell variables telnet

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

脚本通过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'的输出。在变量或文件中。变量将是最佳解决方案。但实际上变量只是保存了客户列表'而不是命令的输出。 :(

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

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

2 个答案:

答案 0 :(得分:6)

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

output_var=$(clientlist)

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

答案 1 :(得分:0)

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

您需要使用expect之类的内容编写脚本,或者使用其他语言(例如PerlPython)编写其中一项工作内容。