检测目录是否存在并在不存在时创建的Shell脚本?

5

我正在尝试创建一个脚本来检测目录是否存在,如果不存在,则创建它。

我该如何做呢?

我查找了一些信息,发现了一个线索:

test -d directory

如果目录存在,true 将被返回;否则将返回 false

但是,如何将此与 mkdir 结合起来呢?


为什么要测试?只需执行“mkdir foo 2> /dev/null”,如果目录已存在,则mkdir会失败,不会造成任何损害。 - William Pursell
2个回答

9

mkdir -p $directory可以满足你的需求。选项-p将创建任何必要的父目录。如果$directory已经存在为一个目录,该命令将不起作用并且成功执行。如果$directory是一个常规文件,它将保持不变并且该命令将失败,并显示相应的错误消息。

如果没有-p选项使用mkdir,则test ... || mkdir ...策略可能会失败,如果$directory包含'/',并且该路径的某个组件不存在。不管怎样test是多余的,因为mkdir在内部执行了同样的测试。


3
test ... || mkdir ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接