Shell
測試是否使用 SFTP 命令下載了任何文件
如何獲取 SFTP 命令的返回碼?
我這樣做是為了從一個目錄下載所有文件。但如果目錄為空,則命令返回
1
如何獲取實際程式碼
File not found
?echo 'get * /var/download' | sftp -b - user@host
或者一個解決方案是忽略/抑制錯誤
File not found
並返回0
(不抑制所有錯誤,只有這個)
OpenSSH
sftp
成功返回 0,錯誤返回 1。沒有提供進一步的區分。
要測試,在嘗試下載之前目錄中是否存在任何文件,您可以使用:
echo "ls /remote/path/*" | sftp -b - user@example.com if [ $? -eq 0 ] then echo "Files exist, can download now" echo 'get /remote/path/* /local/path/' | sftp -b - user@example.com if [ $? -eq 0 ] then echo "Files successfully downloaded" else echo "Files exist, but failed to download" fi else echo "Files do not exist" fi
對於類似的問題,請參閱如何從本地 Linux 腳本檢查遠端 SFTP 伺服器中是否存在文件?