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 脚本:将命令输出保存在变量/文件中?的主要内容,如果未能解决你的问题,请参考以下文章