2013-04-18 3 views
6

このコードで何が問題なのですか?mkdirしようとするとシェルの変数の問題

CLIENT_BUILD_DIR="~/Desktop/TempDir/" 

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

mkdir:〜/ Desktop:このようなファイルまたはディレクトリはありません。

明らかにディレクトリが存在し、スクリプトが、私は〜/デスクトップ/ TEMPDIR/

+1

さらにもう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

あなたも 'eval'できました:) – Jite

5

で変数を置き換える場合~文字が変数で使用された場合再解釈ではありません動作します。

代わりにCLIENT_BUILD_DIR="$HOME/Desktop/TempDir/"を使用できます。

+0

ちょうど私の時間と壁の頭を叩いてたくさん保存! – Moseleyi

6

なぜ単に:

mkdir -p "$CLIENT_BUILD_DIR" 

注意-p

+0

すばらしいヒント!ありがとう! –

関連する問題