求助:使用bash -c实现目录检查删除后必创建功能遇问题
解决方案:Bash单行命令实现目录删除后重建(bash -c执行)
你的原命令问题出在&&的逻辑上:如果rm -r tmp/mydir1因为目录不存在而执行失败,后续的mkdir就不会运行。&&仅当前面的命令执行成功(退出码为0)时才会触发下一个命令。
下面是两种可行的解决方案:
方案1:使用rm -rf忽略不存在的目录
rm的-f参数会强制删除目标,同时忽略不存在的路径,不会抛出错误。这样不管原目录是否存在,rm都会“成功”退出,确保后续的mkdir能正常执行:
bash -c "rm -rf tmp/mydir1 && mkdir -p tmp/mydir1/mydir2"
方案2:用分号;强制执行后续命令
分号;不关心前一个命令的执行结果,会无条件执行后续命令。同时可以把rm的错误输出重定向到/dev/null,避免目录不存在时的报错信息干扰:
bash -c "rm -r tmp/mydir1 2>/dev/null; mkdir -p tmp/mydir1/mydir2"
两种方案都能满足需求:无论原目录是否存在,最终都会创建tmp/mydir1/mydir2目录。
内容的提问来源于stack exchange,提问作者eric_parrot
相关产品推荐
相关产品推荐

