2013-11-27 153 views
0

我想使用某个命令的输出,但我不知道,我怎样才能将输出保存在变量或文件中。Linux Shell脚本:在变量/文件中保存命令输出?

脚本通过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服务器进行。

回答

0

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

你需要使用类似expect写一个脚本,或者在另一个工作相似者之一语言如PerlPython

+0

啊,好吧。谢谢。我将用不同的命令执行这个代码3次,并将telnet的输出保存在文件中。这很奏效。我认为存在更好的解决方案。 :( – user2966991

6

要运行命令“客户端列表”并保存输出在一个变量:“运行此命令,并返回它产生任何输出”

output_var=$(clientlist) 

在bash或sh,所述$(...)语法意味着

相关问题