通过双qoute / single qoute发送价值?

时间:2016-07-12 10:15:00

标签: linux bash lua ash

所以我有一个通过telnet向设备发送命令的灰脚本 命令看起来像这样。

echo 'dofile("lcdprint.lua").lcdprint("date")' | telnet 192.168.1.23 23 

我希望输出日期如下

Tue Jul 12 17:10:51 WIB 2016

但是代替上面的输出,代码在此结果中意外运行

date

如何发送正确的命令?输出应包含日期值,而不是'date'字符串 谢谢你:)

1 个答案:

答案 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的解释,并且使用单引号确保字符串按原样传递。