2013-04-18 70 views
6

任何想法這段代碼有什麼問題?嘗試mkdir時Shell變量問題

CLIENT_BUILD_DIR="~/Desktop/TempDir/" 

if [ ! -d $CLIENT_BUILD_DIR ] 
then 
    { 
     mkdir $CLIENT_BUILD_DIR 
    } 
fi 

我得到的錯誤:mkdir:〜/ Desktop:沒有這樣的文件或目錄。

顯然,目錄是存在的,如果我替換變量的腳本作品〜/桌面/ TEMPDIR/

+1

還有一點,您可以將代碼簡化爲'[-d $ CLIENT_BUILD_DIR] || mkdir $ CLIENT_BUILD_DIR',最好加上||回聲「試圖創建目錄錯誤:$ CLIENT_BUILD_DIR」:) :) – Jite

回答

14

引號阻止了〜的擴展。

用途:

CLIENT_BUILD_DIR=~/Desktop/TempDir/ 

if [ ! -d "$CLIENT_BUILD_DIR" ] 
then mkdir "$CLIENT_BUILD_DIR" 
fi 
+1

這樣做!非常感謝 –

+1

你也可以''評估它:) – Jite

5

~字符不是在一個變量使用時重新詮釋。

您可以改爲使用CLIENT_BUILD_DIR="$HOME/Desktop/TempDir/"

+0

剛剛節省了我的時間和很多的牆頭敲! – Moseleyi

6

爲什麼不乾脆:

mkdir -p "$CLIENT_BUILD_DIR" 

-p

+0

偉大的提示!謝謝! –