ожидать, что спавн не выполняется

привет, у меня есть следующий сценарий ожидания с именем a.exp

#!/usr/bin/expect
spawn cat a.txt

где a.txt содержит следующую строку строкового текста

Hello World

затем я сделал его исполняемым с помощью следующей команды

chmod +x a.exp

теперь я запускаю его следующим образом

./a.exp

вывод, который я получаю, выглядит следующим образом

spawn cat a.txt

с другой стороны, если я использую следующий скрипт

puts [exec cat a.txt]

вместо

spawn cat a.txt

он печатает содержимое файла .txt. Пожалуйста, не могли бы вы помочь мне выполнить его с помощью спавна? Благодарность!


person asil2    schedule 26.05.2011    source источник


Ответы (1)


Вы не сказали ему читать что-либо из порожденной программы. Если я использую эту версию a.exp, она получит то, что я считаю правильным выводом:

#!/usr/bin/expect
spawn cat a.txt
expect "\n";        # Wait for a newline

Если вы действительно просто хотите получить все, что пишет другая программа, не отправляя ничего взамен, вы используете эту последнюю строку вместо того, чтобы дождаться конца файла:

expect eof

Оба производят именно этот вывод, когда я тестирую:

spawn cat a.txt
Hello World
person Donal Fellows    schedule 26.05.2011