如果文件夹尚不存在,如何使用Bash创建文件夹?

时间:2011-02-05 11:25:59

标签: bash directory

#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;

这似乎不起作用。有人可以帮忙吗?

7 个答案:

答案 0 :(得分:248)

首先,在bash中“[”只是一个命令,它要求字符串“]”作为最后一个参数,所以在结束括号之前的空格(以及“!”和“-d”之间的空格需要是两个单独的论点也很重要:

if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
  mkdir -p /home/mlzboy/b2c2/shared/db;
fi

其次,由于你使用-p切换到mkdir,这个检查是没用的,因为这是首先做的事情。只需写下:

mkdir -p /home/mlzboy/b2c2/shared/db;

就是这样。

答案 1 :(得分:87)

实际上没有必要检查它是否存在。既然你已经想要创建它,那么只需要mkdir就可以了

mkdir -p /home/mlzboy/b2c2/shared/db

答案 2 :(得分:56)

简单地说:

mkdir /path/to/your/potentially/existing/folder
如果文件夹已存在,

mkdir将抛出错误。要忽略错误,请写:

mkdir -p /path/to/your/potentially/existing/folder

无需进行任何检查或类似的事情。


供参考:

-p, --parents no error if existing, make parent directories as needed http://man7.org/linux/man-pages/man1/mkdir.1.html

答案 3 :(得分:18)

[]括号内需要空格:

#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ] 
then
    mkdir -p /home/mlzboy/b2c2/shared/db
fi

答案 4 :(得分:17)

更清洁的方式,利用shell逻辑运算符的快捷方式评估。仅当左侧为真时才执行运算符的右侧。

[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db

答案 5 :(得分:4)

我认为你应该重新格式化你的代码:

#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;

答案 6 :(得分:-1)

在任何地方创建您的目录

OUTPUT_DIR=随便

if [ ! -d ${OUTPUT_DIR} ]
then
    mkdir -p ${OUTPUT_DIR}
fi