Hallo zusammen!
Ich, als bash-beginner, erstelle gerade ein Skript in dem es mir notwendig erscheint einen Verzeichnispfad aus mehreren String-Variablen zusammen zu setzen. Klingt an sich sehr einfach, führt aber dazu, dass zwischen dem ersten String und dem angehängten immer ein Leerzeichen entsteht:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #! /bin/bash status=$(mktemp --tmpdir tmp.XXXXXXXXXX) proj_dir=$HOME/Projekte echo $proj_dir # Ausgabe: /home/stephan/Projekte results="$( for f in $proj_dir/*/*.prj; do grep -m 1 -e '^[[:blank:]]*Proj' $f | cut -d = -f 2 [....] else echo "Neues Projekt anlegen" Proj_neu="$(yad --title="Neues Projekt" --width=500 .... [...] echo $Proj_neu # Ausgabe: Proj4 (ohne führende Leerstelle) echo $proj_dir/$Proj_neu # Ausgabe: /home/stephan/Projekte/ Proj4 PRO_DIR= "$proj_dir/$Proj_neu" # Fehlermeldung: ./projselect.sh: Zeile 49: /home/stephan/Projekte/ Proj4 : Datei oder Verzeichnis nicht gefunden # bleibt aber nicht hängen echo $PRO_DIR mkdir "${proj_dir}"/"${Proj_neu}" # Verzeichnis wird erstellt, der Verzeichnisname beginnt aber mit einer Leerstelle [...] |
Ich habe bereits alle möglichen Versionen der Klammer- oder Anführungszeichensetzung versucht, aber irgendwo beschwert er sich immer. Dabei stört mich die Fehlermeldung als solche weniger (solange es tut was es soll, aber schön ist anders). Aber ich würde es sehr begrüßen, wenn sich die führende Leerstelle vermeiden ließe. Zumal in der oberen Ausgabe von $proj_dir auch keine vorhanden ist.
Wenn jemand meinem Verständnis dieser Phänomene auf die Sprünge helfen könnte, wäre ich sehr dankbar.
Ich habe den kompletten Code zusätzlich als Anhang hochgeladen, vielleicht hilft's ja.
Gruß
Stephan