2011-02-05 60 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

相關問題