2011-02-05 33 views

回答

18

您需要[]括号内位:

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

我认为你应该重新格式化您的代码位:

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

首先,在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; 

那就是它。

72

实际上不需要检查它是否存在。既然你已经想创建它,如果它存在,只是MKDIR会做

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

简单地做:如果该文件夹已经存在

mkdir /path/to/your/potentially/existing/folder 

的mkdir将抛出一个错误。要忽略错误,请写:

mkdir -p /path/to/your/potentially/existing/folder 

不需要做任何检查或类似的事情。

13

更清晰的方式,利用shell逻辑运算符的快捷方式评估。只有当左侧为真时,才会执行运算符的右侧。

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

mmh,不是更干净:只是更短。 如果遇到这种说法,很难理解这种说法的含义。 – 2014-07-25 07:46:50

相关问题