Ожидаемый скрипт: максимальное количество аргументов командной строки

Ожидаемый скрипт: максимальное количество аргументов командной строки

Я пытаюсь создать scpкоманду для копирования одного файла с одного сервера на другой. Итак, я передаю 8 аргументов скрипту expectследующим образом

expect my_x_script.exp file_src file_dest s_user s_pass s_host d_user d_pass d_host

Допустимо ли передавать скрипту столько аргументов expect?

решение1

Да, нет проблем с таким количеством аргументов. В зависимости от версии вашего ожидания, вы извлекаете значения одним из этих способов:

lassign $::argv \
    src_file  src_user  src_pass  src_host \
    dest_file dest_user dest_pass dest_host
# or
foreach {src_file src_user src_pass src_host dest_file dest_user dest_pass dest_host} $::argv {break}

В какой-то момент пользовательский интерфейс становится сложным в управлении. Вы можете рассмотреть возможность использования параметров командной строки, чтобы помочь все сделать правильно. Проверьтеcmdlineпосылка отtcllib. Тогда вы можете сделать:

expect my_x_script.exp \
    -src_file file_src \
    -src_user s_user \
    -src_pass s_pass \
    -src_host s_host \
    -dest_file file_dest \
    -dest_user d_user \
    -dest_pass d_pass \
    -dest_host d_host

Связанный контент