【发布时间】:2019-04-08 10:10:44
【问题描述】:
这就是我的 shell 脚本的一部分。
#! /bin/sh
sftp -i $IdentityFile $ServerAddress << EOF
command 1 #Execute in the remote
command 2 #Execute in the remote
bye
EOF
command 3 #Execute locally
根据我目前对脚本的了解,如果一个命令执行失败,控制权会简单地传递给下一个命令。但是如果 sftp 命令无法在上面的块中建立网络连接怎么办?这是否意味着command 1 和command 2 将在本地执行?还是控件会跳转到command 3?
如何捕捉 sftp 中可能出现的错误并将控件定向到command 3?如果可能的话,我可以使用? 变量检测错误,以采取某些先发制人的行动吗?一些指导会很棒。
【问题讨论】:
-
here-document的内容不是shell命令的一部分,而是一组要传递给
sftp的stdin的字符串,如果连接失败,将被丢弃。然后控件跳转到command 3。sftp的错误代码设置为$?。请访问here 获取代码表。
标签: bash shell error-handling sh openssh