如何使用Bash创建文件夹(如果它尚不存在)?
问题描述:
#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
这似乎不起作用。谁能帮忙?如何使用Bash创建文件夹(如果它尚不存在)?
答
您需要[
和]
括号内位:
#!/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
其次,由于您正在使用-p切换到mkdir
,所以此检查无用,因为这首先是什么。只写:
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
不需要做任何检查或类似的事情。
答
更清晰的方式,利用shell逻辑运算符的快捷方式评估。只有当左侧为真时,才会执行运算符的右侧。
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db
+9
mmh,不是更干净:只是更短。 如果遇到这种说法,很难理解这种说法的含义。 – 2014-07-25 07:46:50
为什么你有分号? – ADTC 2016-04-13 11:05:19