如何使用Bash创build一个文件夹,如果它不存在?
#!/bin/bash if [!-d /home/mlzboy/b2c2/shared/db]; then mkdir -p /home/mlzboy/b2c2/shared/db; fi;
这似乎并不奏效。 谁能帮忙?
首先,在bash中,“[”只是一个命令,它需要string“]”作为最后一个参数,所以在括号前的空格(以及“!”和“-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;
这就是它。
实际上不需要检查它是否存在。 既然你已经想创build它,只要mkdir会做
mkdir -p /home/mlzboy/b2c2/shared/db
简单地做:
mkdir /path/to/your/potentially/existing/folder
如果文件夹已经存在,mkdir会抛出一个错误。 要忽略这些错误,请写下:
mkdir -p /path/to/your/potentially/existing/folder
不需要做任何检查或类似的事情。
你需要在[
和]
括号内的空格:
#!/bin/bash if [ ! -d /home/mlzboy/b2c2/shared/db ] then mkdir -p /home/mlzboy/b2c2/shared/db fi
更清晰的方式,利用shell逻辑运算符的快捷方式评估。 只有在左侧为真的情况下才能执行运算符的右侧。
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db
我想你应该重新格式化你的代码:
#!/bin/bash if [ ! -d /home/mlzboy/b2c2/shared/db ]; then mkdir -p /home/mlzboy/b2c2/shared/db; fi;