2013-11-27 150 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,所述$(...)語法意味着

相關問題