140

在我的 bash 脚本中,我这样做:

mkdir product;

当我多次运行脚本时,我得到:

mkdir: product: File exists

在控制台中。

因此,如果目录不存在,我希望只运行 mkdir 。这可能吗?

4

5 回答 5

270

做一个测试

[[ -d dir ]] || mkdir dir

或使用 -p 选项:

mkdir -p dir
于 2013-09-04T20:12:21.773 回答
130
if [ ! -d directory ]; then
  mkdir directory
fi

或者

mkdir -p directory

-pdirectory如果不存在则确保创建

于 2013-09-04T20:16:32.287 回答
11

使用 mkdir 的-p选项,但请注意它还有另一个效果。

 -p      Create intermediate directories as required.  If this option is not specified, the full path prefix of each oper-
         and must already exist.  On the other hand, with this option specified, no error will be reported if a directory
         given as an operand already exists.  Intermediate directories are created with permission bits of rwxrwxrwx
         (0777) as modified by the current umask, plus write and search permission for the owner.
于 2013-09-04T20:13:00.293 回答
5

mkdir -p

-p, --parents 如果存在则没有错误,根据需要创建父目录

于 2013-09-04T20:12:27.823 回答
4

尝试使用这个: -

mkdir -p dir;

注意:-这也将创建任何不存在的中间目录;例如,

查看mkdir -p

或试试这个: -

if [[ ! -e $dir ]]; then
    mkdir $dir
elif [[ ! -d $dir ]]; then
    echo "$Message" 1>&2
fi
于 2013-09-04T20:13:03.380 回答