#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
这似乎不起作用。有人可以帮忙吗?
[
只是一个命令,它期望字符串]
作为最后一个参数,因此,关闭括号前的空格(以及!
和-d
之间需要分别作为两个参数的空格)是重要的。if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi
其次,由于您正在使用-p
开关来创建目录,因此这个检查是无用的,因为这正是它首先要做的事情。只需编写:
mkdir -p /home/mlzboy/b2c2/shared/db;
就是这样。
-p
标志将在需要时创建任何父目录。 - Danijel实际上无需检查其是否存在。由于您想要在它存在的情况下创建它,只需要使用mkdir即可。
mkdir -p /home/mlzboy/b2c2/shared/db
-p
标志会在必要时创建任何父目录。 - Danijel只需这样做:
mkdir /path/to/your/potentially/existing/folder
如果文件夹已经存在,mkdir将会抛出一个错误。如果想要忽略这些错误,请输入以下命令:
mkdir -p /path/to/your/potentially/existing/folder
不需要进行任何检查或其他操作。
参考:
-p, --parents
如果存在则不报错,如有需要则创建父目录 http://man7.org/linux/man-pages/man1/mkdir.1.html
[
和 ]
括号内加入空格:#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]
then
mkdir -p /home/mlzboy/b2c2/shared/db
fi
更简洁的方式,利用Shell逻辑运算符的快捷判断。当左侧为true时,才会执行右侧操作。
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db
-p
参数使检查变得不必要。当你不想自动创建所有父目录时,你仍然可以使用它,也就是说,当你不想使用 -p
时。 - ADTC[ -d /path/to/dir ] || mkdir /path/to/dir
,当左边为假时执行右边的操作。 - ADTC我认为您需要稍微调整一下您的代码格式:
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
在任何地方创建您的目录
OUTPUT_DIR=任何内容
if [ ! -d ${OUTPUT_DIR} ]
then
mkdir -p ${OUTPUT_DIR}
fi
;
符号是命令分隔符,换行符也是。由于then
是一个单独的命令,因此需要前面的分号才能将其写在同一行中。mkdir
和fi
后面的分号是多余的。 - Andreas Riedmüller