想知道我的语法有什么问题。
运行此 bash 脚本按预期工作,并执行所有命令:
sftp -i ~/.ssh/my_private_key $username@$host <<EOF
lcd /home/documents
get *
bye
EOF
但是,尝试将 EOF 放入 IF 中会使其无法执行:
sftp -i ~/.ssh/my_private_key $username@$host
if [[ $? != 0 ]]; then
echo "SFTP connection failed to establish."
exit 10
else <<-EOF
lcd /home/documents
get *
bye
EOF
echo "Files moved and connection closed."
fi
exit 0
所发生的只是我在终端中看到“已连接到 $host”消息,然后它等待输入。如果我键入任何类似的命令ls
或pwd
它们执行,最后键入bye
关闭连接并打印"Connection closed."
,但 EOF 中的任何命令都不会在任何时候执行。
重定向应应用于
sftp
命令,因此if
应类似于:毕竟,如果无法建立连接,是否发送命令都没有关系,所以无论如何都要发送它们。