exec не работает в ожидаемом скрипте - PullRequest
1 голос
/ 19 апреля 2011

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

$ expect
expect1.1> exec echo a
a
expect1.2>
$ cat > test.exp
exec echo a
$ expect test.exp
$

Если я запускаю ожидаемо и заставляю его выполнить что-то вручную, это работает,Если я добавлю ту же команду в скрипт, она не будет работать.Что происходит?

1 Ответ

5 голосов
/ 20 апреля 2011

Обратите внимание, что ожидаемый по сути является расширением Tcl.exec Tcl выполняет внешнюю команду, захватывает вывод и возвращает его как значение - не отправляет его на стандартный вывод, если вы не указали его.Тем не менее, интерактивный Tcl (или ожидаемый) сеанс выводит вывод на стандартный вывод для удобства .

Ваш сценарий должен быть:

puts [exec echo a]
# or
set output [exec echo a]
puts $output

Я предполагаю, что "echo a" является заполнителем для более сложной внешней команды.Если вы просто хотите что-то напечатать:

puts "this is something"  ;# the Tcl way
send_user "this is too\n" ;# the expect way

Если вы новичок в Tcl и ожидаете, то вам следует сначала изучить Tcl .

...