2014-10-20 83 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