如何避免rm -R删除不存在目录时返回exit 1,使脚本exit 0?
删除目录时忽略不存在的目标并返回exit 0
不用if-then语句的话,有两种简单方法可以实现需求:
方法1:使用rm的-f参数
给rm命令加上-f(强制删除)参数,配合递归删除的-R参数,命令如下:
rm -Rf dir1 dir2 dir3
-f参数会让rm自动忽略不存在的目录,不输出"No such file or directory"错误,执行后无论目标是否存在,都会返回exit 0。这个方法适用于大部分主流shell环境(包括GNU/Linux和BSD/macOS)。
方法2:用||操作符强制返回0
如果需要保留rm对其他错误的输出(比如权限不足的提示),但只想让整个命令最终返回0,可以用shell的逻辑或操作符:
rm -R dir1 dir2 dir3 || true
||表示只有前面的rm命令执行失败时,才会运行后面的true命令,而true始终返回exit 0,因此整条命令的退出状态一定是0。
内容的提问来源于stack exchange,提问作者tjernigan
相关产品推荐
相关产品推荐

