2015-03-15 3 views
2

Я хочу принудительно ввести команду os.execute(). Я использую Lua на FreeBSD, и я хочу написать письмо.Принудительно введите (введите) в os.execute() в Lua

Если я пишу это:

os.execute('mail -v -s \'Hello Im the Topic\' [email protected]') 
os.execute('Hello this should be the message') 
os.execute('.') 

это не работает, я получаю по электронной почте без содержания, только тема идет корыто. Кроме того, я получаю некоторые ошибки в freebsd («Привет, это должно быть сообщение» нет команды ... blabla)

Так что я хочу заставить (ввести) в один os.execute. Я пробовал:

os.execute('mail -v -s \'Hello Im the Topic\' [email protected]\nHello this should be a message\n.') 

и

os.execute('mail -v -s \'Hello Im the Topic\' [email protected]\ 
Hello this should be a message\ 
.') 

, но как не работает.

ответ

2

Используйте io.popen, чтобы открыть трубу команду, которую вы хотите выполнить, и записывать в него данные, чтобы отправить:

local f=io.popen('mail -v -s \'Hello Im the Topic\' [email protected]','w') 
f:write[[ 
Hello this should be a message 
. 
]] 
f:close() 
+0

он не работает для меня ... –

+0

Он отлично работает для меня. Что не работает для вас? Вы получаете ошибку Lua? Попробуйте удалить «local». – lhf

+0

print ("Started") \t local f = io.popen ('mail -v -s \' Hello Im the Topic \ '[email protected]', 'w') f: написать [[ Здравствуйте, это должно быть сообщение . ]] е: близко() \t печати ("Выполненный") это только показывает "начало", но не выполняется, не ошибка –

Смежные вопросы