在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命令的执行结果,而不一定表示文件上传成功。可能存在网络中断、权限问题等导致上传失败但命令仍然执行成功的情况。如果需要更可靠的判断文件是否上传成功,可以考虑使用其他方法,如检查目标服务器上文件的存在与大小。