Почему мой сценарий expect не работает в строке 1?

самая первая строка моего сценария expect терпит неудачу. Вот все содержимое моего скрипта, и он терпит неудачу:

#!/usr/bin/expect -f

и он не сходу с

": no such file or directory

как мой ответ. Expect фактически установлен и находится в /usr/bin/, и я запускаю это из root. У меня нет дополнительных пробелов или строк перед знаком#. Конечно, изначально было больше сценария, но он терпит неудачу, прежде чем он доберется до хорошего материала.

4 ответов


попробовал, и вот результат:/usr/bin / expect^M: плохой интерпретатор

возможно ли, что там есть новая строка Windows ("^M"), которая запутывает сценарий? Вы можете попробовать "od", чтобы увидеть, какие символы новой строки после" expect "и" tofromdos " или редактора(например, emacs в режиме hexl), чтобы удалить его. Дополнительные сведения см. На страницах man.


ваши окончания строки неверны. Протолкни его!--0--> или tr -d '\r'.


Я имел эту проблему и нашли я не ожидал установлен переводчик! Как ни странно, если вы запустили команду в оболочке, она сработала. Однако через скрипт оболочки я получил ошибку: / usr/bin / expect: плохой интерпретатор: нет такого файла или каталога.

я исправил это, просто установив интерпретатор Expect. Выбранное имя пакета:ожидать libtcl8.6

просто запустите:

sudo apt-get install expect

Я действительно не знаю, ожидаю, если честно, но когда я запускаю это в своей системе, он" работает " нормально. Ничего не происходит, но этого я и ожидал. Я не получаю никакого сообщения об ошибке. Согласно man page,

#!/usr/bin/expect -f

- это правильный способ запуска скрипта. Ожидать потом хлебает копирование скрипта как cmdfile.

способ, которым я получил его, чтобы воспроизвести проблему, состоял в том, чтобы фактически поставить A ^M в конце строки вместо нормальной новой строки (см. ответ и это побудило меня попробовать). Я уверен, что команда vim: set list покажет любые нечетные символы.