(4 Antworten)
Vor 3 Jahren geschlossen.
Was ist falsch an den folgenden Befehlen?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Allerdings
$ mkdir ~/Music/240118
funktioniert.
Ich hätte nie gedacht, dass ich nach Jahren der Bash-Nutzung solche Fragen stellen würde…
Akzeptierte Antwort:
Die Tilde-Erweiterung funktioniert nicht, nachdem die Variable erweitert wurde, also wenn Sie eine wörtliche Tilde in var
einfügen , wird es als wörtliche Tilde zu mkdir
enden . (Beachten Sie, wie die Fehlermeldung von mkdir
enthält eine wörtliche Tilde, nicht den tatsächlichen Pfad Ihres Home-Verzeichnisses.)
Und da Sie die Tilde in der Aufgabe in Anführungszeichen setzen, wird sie dort auch nicht erweitert. Wenn es nicht in Anführungszeichen steht, tut es:
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
Natürlich können Sie auch einfach $HOME
verwenden stattdessen:
$ var="$HOME/Music"; echo $var
/home/me/Music