2013-04-18 12 views
6

Jakieś pomysły na temat tego kodu?Problem ze zmienną powłoki podczas próby mkdir

CLIENT_BUILD_DIR="~/Desktop/TempDir/" 

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

Występuje błąd: mkdir: ~/Pulpit: brak takiego pliku lub katalogu.

Oczywiście katalog istnieje i skrypt działa, jeśli zastąpić zmienną z ~/Pulpit/TempDir/

+1

Jeszcze jedna wskazówka, możesz uprościć kod do '[-d $ CLIENT_BUILD_DIR] || mkdir $ CLIENT_BUILD_DIR', a najlepiej dodaj '|| echo "Błąd podczas próby utworzenia katalogu: $ CLIENT_BUILD_DIR" ':) – Jite

Odpowiedz

14

Cytaty uniemożliwiają rozszerzenie o ~.

Zastosowanie:

CLIENT_BUILD_DIR=~/Desktop/TempDir/ 

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

To się udało! Wielkie dzięki –

+1

Możesz "eval" to też :) – Jite

5

~ charakter nie jest reinterpretacji gdy używany w zmiennej.

Zamiast tego można użyć CLIENT_BUILD_DIR="$HOME/Desktop/TempDir/".

+0

Tylko zaoszczędziłem czas i dużo walenia głową! – Moseleyi

6

Dlaczego nie po prostu:

mkdir -p "$CLIENT_BUILD_DIR" 

Uwaga -p.

+0

Świetna wskazówka! Dzięki! –

Powiązane problemy