Почему я получаю сообщение, что команда не найдена при запуске сценария Expect?

Сегодня я играл с Expect/TCL и надеялся, что кто-нибудь скажет мне, почему приведенный ниже сценарий не работает:

: command not found  
./expect3: line 3: send: command not found

#!/usr/bin/expect -f

send " we are going to open up a file for reading, ok? \n"
expect "ok"

set fileopen [open "/home/aaron/text.txt" "r"]

set a [read $fileopen]
send "i am expecting to see a string from the file here $fileopen"

close $fileopen

Обе команды send и close терпят неудачу, но другие сценарии, которые я написал с помощью команды spawn, похоже, работают нормально?


person DevilWAH    schedule 25.06.2012    source источник
comment
@IgnacioVazquez-Abrams В следующий раз просто почисти. Пожалуйста, не оставляйте это для других, если вы так сильно к этому относитесь.   -  person Todd A. Jacobs    schedule 26.06.2012
comment
Как человек научится, если я пойду убирать их беспорядок?   -  person Ignacio Vazquez-Abrams    schedule 26.06.2012
comment
У меня есть поговорка, когда другие люди перестанут быть тупыми, я научусь писать лучше. У меня неврологическое заболевание, которое влияет на мою рабочую память и заставляет меня делать ошибки. Почему то, что я играю с кем-то глупее меня, называется буллингом, а люди считают, что ошибки, которые я совершаю, связаны с моей ленью? IQ в верхних 2% населения, и меня судят по моей орфографии... поди разберись!   -  person DevilWAH    schedule 26.06.2012
comment
Никто не судит вас по правописанию. Что ж... Я не осуждаю вас; Я не могу говорить за его...   -  person Ignacio Vazquez-Abrams    schedule 26.06.2012
comment
В интернете никто не знает, что ты собака.   -  person glenn jackman    schedule 27.06.2012


Ответы (1)


Проблема

Основная проблема заключается в том, что вы неправильно разделяете свои команды. Команды в TCL должны быть разделены новой строкой или точкой с запятой.

Решение

В общем, у вас должна быть только одна команда Expect или TCL в строке, если только у вас нет правильно сформированного составного оператора. Например, этот измененный фрагмент будет работать:

#!/usr/bin/expect -f

send "We are going to open up a file for reading, ok?\n"
expect "ok"

потому что команды отправки и ожидания разделены символами новой строки.

Смотрите также

http://tmml.sourceforge.net/doc/tcl/Tcl.html

person Todd A. Jacobs    schedule 26.06.2012
comment
Отлично, я только что узнал, что вы можете использовать блокнот ++ с плагином для редактирования файлов напрямую через SFTP. отлично работает при работе с Linux-скриптами с Windows-машины. Единственное, что вы создаете новый файл в блокноте ++, он дает ему форматирование Windows EOL! Спасибо за указание на проблемы, я думаю, что, возможно, прошло некоторое время, прежде чем я подумал об этом. :) - person DevilWAH; 26.06.2012
comment
@Devil Tcl очень доволен обработкой CR-NL, адаптируясь ко всему, что есть в файле, но Unix нет. Эта первая строка #! должна иметь правильный терминатор (или вы можете сделать expect ./yourscript.exp вместо ./yourscript.exp, чтобы переопределить поиск exec-magic). - person Donal Fellows; 26.06.2012