Frage Shell-Variablenproblem beim Versuch, mkdir zu versuchen


Irgendwelche Ideen, was ist mit diesem Code falsch?

CLIENT_BUILD_DIR="~/Desktop/TempDir/"

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

Ich bekomme den Fehler: mkdir: ~ / Desktop: Keine solche Datei oder Verzeichnis.

Offensichtlich ist das Verzeichnis dort und das Skript funktioniert, wenn ich die Variable durch ~ / Desktop / TempDir / ersetzen


7
2018-04-18 14:01


Ursprung


Antworten:


Die Zitate verhindern die Erweiterung von ~.

Benutzen:

CLIENT_BUILD_DIR=~/Desktop/TempDir/

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

15
2018-04-18 14:07



Warum nicht einfach:

mkdir -p "$CLIENT_BUILD_DIR"

Hinweis -p.


6
2018-04-18 14:32



Das ~ Zeichen wird nicht neu interpretiert, wenn es in einer Variablen verwendet wird.

Sie können verwenden CLIENT_BUILD_DIR="$HOME/Desktop/TempDir/" stattdessen.


5
2018-04-18 14:07