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