我有一个使用Bash和期望的脚本程序。 该shell脚本正在执行SFTP上传。使用Bash上传SFTP
这是脚本。
#!/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'编写一个不意味着自动化的程序会使未来版本以破坏脚本的方式发生更大的风险。 –
此外,这是只**使用expect,而不是bash。 –
@CharlesDuffy - 'expect << EOD'是shell语法。 :) – pynexj