私はBash with Expectを使用するスクリプトプログラムを持っています。 このシェルスクリプトはSFTP Uploadを実行しています。SFTP 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をサポートしています)。 'expect'を使って自動化されていないプログラムをスクリプト化することは、あなたのスクリプトを壊すような形で将来のバージョンが変更されるリスクをはるかに高めます。 –
また、これは、** bashではなくexpectを使用した**のみです。 –
@CharlesDuffy - 'expect << EOD'はシェル構文です。 :) – pynexj