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

这似乎不管用。有人能帮忙吗?


在[和]括号内需要空格:

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

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

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

首先,在Bash中[只是一个命令,需要字符串]作为最后一个参数,因此右括号前的空格(以及中间!)d也需要作为两个单独的参数)很重要:

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

其次,由于您正在为mkdir使用-p switch,因此这种检查是无用的,因为这是它首先要做的事情。只写:

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

就是这样。


实际上不需要检查它是否存在。既然您已经想要在它存在的情况下创建它,那么mkdir就可以了

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

只是做的事:

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


更简洁的方式,利用shell逻辑运算符的快捷求值。只有left side为真时才执行运算符的右侧。

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

在任何地方创建目录

OUTPUT_DIR =什么

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