2014-10-20 113 views
1

我有一个关于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 

结果:

无法读取数据包:连接被对方​​复位

成功

+0

删除'echo $ ?;'。 – Cyrus 2014-10-20 07:49:50

+0

我试过删除echo $?; 和 if [$? -eq 0]; 然后 ... 但这次它会去“未知错误” – hades 2014-10-20 07:54:16

+0

啊,nvm,我发现它......我的错误..大声笑......谢谢 – hades 2014-10-20 08:01:14

回答

0

这是因为$?是对每一个新功能复位调用,所以你必须一次捕捉到它,并检查该variabl e改为:

rc=$? 
if [ $rc -eq 0 ]; then 
# ... 
+0

感谢您的帮助,非常感谢... – hades 2014-10-20 08:01:46