2016-07-12 3 views
2

Итак, у меня есть скрипт, который посылает команду на устройство через telnet.
Команда выглядит так.
Отправить стоимость через двойной qoute/single qoute?

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

Я хочу, чтобы дата вывода как этого

Tue Jul 12 17:10:51 WIB 2016 

Но вместо выше выхода, код запуск неожиданного с этим результатом

date 

Как отправить правильную команду? Результат должен содержать значение даты, а не строку «date».
Thankyou :)

+1

Спасибо mklement0, он работает! Действительно, я использую прошивку nodemcu с языком lua – Dika

ответ

3

Если вы хотите, чтобы включить выход из локально выполнении утилиты date, перед отправкой строки команды на целевой машине, используйте $(...), в Bash command substitution:

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

Примечание как общая строка с двойными кавычками, чтобы обеспечить расширение $(...).

Если вы хотите запустить dateна целевой машине использовать Lua-х os.execute() запустить команду оболочки:

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

Обратите внимание, как общая строка является одинарными кавычками, потому что без устного перевода Bash необходим в этом случае, и использование одинарных кавычек гарантирует, что строка передается как есть.