Bash脚本SFTP返回代码比较

时间:2014-10-20 07:43:03

标签: bash

我有1个关于sftp的问题,如果我成功连接到服务器,并上传了文件,它将返回0,如果服务器没有连接,它将返回255.

$?变量返回0如果成功,如果失败则返回255,但不知何故在if-else语句中,结果总是成功甚至是$?返回255,任何想法?我不确定比较的方式是否正确,我尝试比较string和int

sftp $ftpuser@$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 

结果:

无法读取数据包:通过对等方重置连接

255

成功

1 个答案:

答案 0 :(得分:0)

这是因为$?会在每个被调用的新函数上重置,因此您必须捕获它一次并检查该变量:

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