所以我有一个通过telnet向设备发送命令的灰脚本
命令看起来像这样。
echo 'dofile("lcdprint.lua").lcdprint("date")' | telnet 192.168.1.23 23
我希望输出日期如下
Tue Jul 12 17:10:51 WIB 2016
但是代替上面的输出,代码在此结果中意外运行
date
如何发送正确的命令?输出应包含日期值,而不是'date'字符串 谢谢你:)
答案 0 :(得分:3)
如果要在执行date
实用程序的情况下合并本地的输出,在将命令字符串发送到目标计算机之前,请使用$(...)
,Bash' s command substitution:
echo "dofile('lcdprint.lua').lcdprint('$(date)')" | telnet 192.168.1.23 23
注意整个字符串是如何双引号以确保扩展$(...)
。
如果要在目标计算机上运行date
,请使用Lua的os.execute()
运行shell命令:
echo 'dofile("lcdprint.lua").lcdprint(os.execute("date"))' | telnet 192.168.1.23 23
注意整个字符串是如何单引号,因为在这种情况下不需要Bash的解释,并且使用单引号确保字符串按原样传递。