У меня есть программа скриптов, которая использует Bash с Expect. Этот сценарий оболочки выполняет загрузку SFTP.SFTP Upload с помощью Bash
Вот сценарий.
#!/usr/bin/expect -f
/usr/bin/expect << EOD
spawn sftp [email protected]
#expect "*Are you sure you want to continue connecting*" {send "yes\r" }
expect "Password:*"
send $pwd\r
expect "sftp> "
send "lcd $locdirectory\r"
expect "sftp> "
send "cd $remDirect\r"
expect "sftp> "
send "put $file\r"
expect "sftp> "
send "bye\r"
expect EOD
При запуске этого скрипта он будет бесконечным циклом после утверждения bye.
Он сохраняет печать «Y» на терминале и никогда не кончается.
Пожалуйста, объясните, почему это происходит.
Рассматривались ли вы с использованием клиента, разработанного, документально подтвержденного и поддерживаемого для автоматического использования, такого как 'lftp'? (Да, он поддерживает sftp). Использование 'ожидать' для сценария программы, не предназначенной для автоматизации, имеет гораздо более высокий риск изменения будущих версий в способах, нарушающих ваш скрипт. –
Кроме того, это ** только **, используя ожидание, а не bash вообще. –
@CharlesDuffy - 'ожидать << EOD' - это синтаксис оболочки. :) – pynexj