Hallo allseits,
Ich dachte immer, die Tilde ("~") als Verweis auf das eigene Home-Verzeichnis kann man auch in Scripts verwenden? In der Commandline ist's klar, beispielsweise ein "cd ~" wechselt erwartungsgemäß in das eigene Home-Verzeichnis.
Aber folgendes kurzes Script bringt ein für mich überraschendes Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/bin/bash if [ -d "~/tmp" ]; then echo "#1: Dir ~/tmp existiert" else echo "#1: Dir ~/tmp existiert NICHT" fi # und jetzt der gleiche if nochmals, aber anstatt der Tilde nehmen wir ein $( echo ~ ) ... if [ -d "$( echo ~ )/tmp" ]; then echo "#2: Dir ~/tmp existiert" else echo "#2: Dir ~/tmp existiert NICHT" fi |
Das Ergebnis wenn man dieses testscript ("testscript.sh") aufruft:
1 2 3 4 | > mkdir ~/tmp > ./testscript.sh #1: Dir ~/tmp existiert NICHT #2: Dir ~/tmp existiert |
Hae?!?
Warum meldet der erste if, das Verzeichnis existiert NICHT, obwohl es existiert? Kann/Darf man die Tilde als Verweis auf das eigene Home-Directory in Scripts nicht verwenden?
Oder löst die Bash die Tilde des ersten if deshalb nicht richtig auf, weil ~/tmp unter doppelten Hochkommata steckt (Wenn man die wegnimmt, funktioniert's wieder ...)?