bash脚本SFTP返回码比较
问题描述:
我有一个关于SFTP 1个问题,如果我成功地连接到服务器,并上传的文件,它会返回0,如果服务器没有连接,将返回255bash脚本SFTP返回码比较
的$ ?变量返回0如果成功,返回255如果失败,但不知何故在if-else语句中,结果总是会成功甚至是$?返回255,有什么想法?我如果比较的方法是正确与否不能确定,我试图用绳子都比较和诠释
sftp [email protected]$ftpaddr <<_FTP>>$ftplogs
cd /$DEST_DIR
mput $FILE_NAME*
quit
pwd >> $ftplogs
_FTP
echo $?;
if [ $? -eq 0 ];
then
mv $FILE_NAME* $ARCHIVE_DIR
echo "Success"
elif [ $? -eq 255 ]
then
echo "Failed"
exit 1
else
echo "Unknown error"
exit 1
fi
结果:
无法读取数据包:连接被对方复位
成功
答
这是因为$?
是对每一个新功能复位调用,所以你必须一次捕捉到它,并检查该variabl e改为:
rc=$?
if [ $rc -eq 0 ]; then
# ...
+0
感谢您的帮助,非常感谢... – hades 2014-10-20 08:01:46
删除'echo $ ?;'。 – Cyrus 2014-10-20 07:49:50
我试过删除echo $?; 和 if [$? -eq 0]; 然后 ... 但这次它会去“未知错误” – hades 2014-10-20 07:54:16
啊,nvm,我发现它......我的错误..大声笑......谢谢 – hades 2014-10-20 08:01:14