以编程方式检查shell脚本中的失败scp的最佳方法

jda*_*mae 14 unix bash shell

我有一个shell脚本,我正在使用这行代码执行循环本地文件(.gz)并执行scp.scp如果可能,我想测试失败.我正在做一个循环,所以我可以将每个文件名回显到日志,以便我可以跟踪它.

有人可以告诉我如何检查失败的scp吗?或者更好的是,这是一个很好的代码示例吗?谢谢你的帮助.

for gzfile in $LOCALDMPDIR/*.gz
do
  /usr/bin/scp -P 2222 -i $KEYFILE $gzfile foobar@$1:$TGTDIR
  echo "$gzfile is done. " 2>&1
done
Run Code Online (Sandbox Code Playgroud)

Bre*_*den 22

用$?访问最后一个命令的返回值.检查scp的手册页以进行验证,但我认为返回值为零意味着成功.非零值意味着某种失败.

  • 我的 scp 副本在成功发送文件 fwiw 后定期返回 1,不知道为什么。 (2认同)

4gi*_*ivN 10

使用 :

if [ $? -eq 0 ];
then
    echo "OK"</br>
else
    echo "NOK"</br>
fi
Run Code Online (Sandbox Code Playgroud)

"["之后和"]之前有空白.不要围绕$?和0引号