Ожидайте обработку аргументов
Вопрос
Я хотел бы создать сценарий ожидания, который подключается к серверу через telnet и выполняет некоторую авторизацию. У меня проблема с использованием параметров скрипта. Исходя из человека, я ожидал, что это сработает:
#!/usr/bin/expect -f
spawn telnet $argv1 5038
...
К сожалению, я вернулся не могу прочитать " argv1 " ;: нет такой переменной
. Как это сделать?
Решение
$ argv
- это список Tcl, содержащий параметры командной строки, индексированные начиная с 0. Вы хотите:
[lindex $argv 0]
Другие советы
Аргументы строки команды представлены в виде списка в переменной argv, вы можете использовать lindex, чтобы получить элемент из этого списка, поэтому, если первый аргумент - это узел, к которому следует подключиться через telnet, выполните:
spawn telnet [lindex $argv 0] 5038
См. переменные, предоставленные оболочкой , в оболочках и lindex в списках
Я получил похожую ошибку, не могу прочитать " argv0 " ;: нет такой переменной
, когда я попытался использовать $ argv0 в процедуре. Решение состояло в том, чтобы получить к нему явный доступ из глобального пространства имен, используя $ :: argv0
.