SFTP脚本中rm命令遇不存在文件时的处理方式及-f参数作用咨询
SFTP脚本中rm命令遇不存在文件时的处理方式及-f参数作用咨询
嗨,我来帮你理清这个问题~
首先看你的脚本风格,应该是用的WinSCP的SFTP脚本吧?先针对这个场景给你说清楚:
- 默认无-f参数的情况:如果某个文件(比如你说的file2.edi)不存在,执行
rm file2.edi时脚本会直接报错终止,后面的删除命令和上传Put命令都没法继续执行了。 - 添加-f参数后的情况:加上
-f(强制删除)参数后,哪怕目标文件不存在,rm命令也不会抛出错误中断脚本,它会默默跳过这个不存在的文件,继续执行后续的rm命令,直到完成所有删除操作,再正常执行后面的Put上传步骤。
举个你的脚本例子:如果file2.edi不存在,rm file2.edi -f这一行不会触发错误,脚本会接着执行rm file3.edi -f、rm file4.edi -f,然后顺利进入to_ar目录完成四个文件的上传。
另外补充一句:如果是用OpenSSH的sftp客户端,-f参数的作用是一样的,只是语法顺序是rm -f file2.edi,同样能实现忽略不存在文件、不中断脚本的效果,大多数主流SFTP客户端的rm -f逻辑都遵循这个规则。
备注:内容来源于stack exchange,提问作者JSS




