如何获取SFTP命令的返回码?
我这样做是为了从目录中下载所有文件。但如果目录为空,命令将返回1
如何获取实际代码File not found
?
echo 'get * /var/download' | sftp -b - user@host
或者一种解决方案是忽略/抑制错误File not found
并返回0
(不抑制所有错误,仅抑制此错误)
答案1
OpenSSHsftp
成功时返回 0,错误时返回 1。
没有提供进一步的区别。
要测试目录中是否存在任何文件,然后再尝试下载它们,您可以使用:
echo "ls /remote/path/*" | sftp -b - [email protected]
if [ $? -eq 0 ]
then
echo "Files exist, can download now"
echo 'get /remote/path/* /local/path/' | sftp -b - [email protected]
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 服务器中是否存在文件?