在Shell中,可以使用變量$?來判斷上一個命令的執行結果。如果命令執行成功,則$?的值為0;如果命令執行失敗,則$?的值為非零值。
根據這個特性,可以使用以下方法判斷sftp上傳是否成功:
使用sftp命令上傳文件,并將上傳結果保存到一個臨時文件中:
sftp user@host:/path/to/destination localfile > upload.log 2>&1
這里將sftp命令的輸出重定向到upload.log文件中。
檢查upload.log文件的內容,如果文件中包含類似"Successfully uploaded"的關鍵字,則表示上傳成功;否則表示上傳失敗。
if grep -q "Successfully uploaded" upload.log; then
echo "Upload successful"
else
echo "Upload failed"
fi
這里使用grep命令來搜索upload.log文件中是否包含"Successfully uploaded"關鍵字,并通過if語句判斷上傳結果。
注意:這種方法只是判斷sftp命令的執行結果,而不一定表示文件上傳成功。可能存在網絡中斷、權限問題等導致上傳失敗但命令仍然執行成功的情況。如果需要更可靠的判斷文件是否上傳成功,可以考慮使用其他方法,如檢查目標服務器上文件的存在與大小。