#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
这似乎不起作用。有人可以帮忙吗?
答案 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