我有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
成功
答案 0 :(得分:0)
这是因为$?
会在每个被调用的新函数上重置,因此您必须捕获它一次并检查该变量:
rc=$?
if [ $rc -eq 0 ]; then
# ...