Angenommen, ich habe mehrere Variablen in einem Shell-Skript (z. B. in zsh):
FOLDER_1, FOLDER_2, etc.
Diese Variablen beziehen sich auf Ordner absteigend /
. Zum Beispiel, wenn ich einen Pfad habe/home/me/stuff/items
Die Variablen wären:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Angenommen, ich möchte den entsprechenden Pfad durch Verketten der Variablen wiederherstellen. Eine Möglichkeit besteht darin, den Pfad wie folgt zu erstellen:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Nehmen wir jedoch an, dass einige der Variablen FOLDER_i
mit Schrägstrichen versehen sind, während andere dies nicht tun (und wir nicht wissen, welche), z
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Meine Frage ist: Wie könnte ich den Weg robust bauen? (zB vermeiden Sie doppelte Schrägstriche und fügen Sie sie hinzu, wo sie sein müssen).
Ich dachte, eine Möglichkeit, dies zu tun, besteht darin, /
immer zwischen Variablenpaaren einzufügen und dann alle Duplikate mit zu löschen sed
, aber ich kann es nicht zum Laufen bringen (ich bin mir nicht sicher, ob ich /
richtig damit umgehe sed
).
Außerdem erfinde ich das Rad neu ? (dh gibt es schon einen eingebauten, der das macht?).
Wenn sich die Variablen beispielsweise in einem Array befinden , FOLDERS
wäre es dann möglich, dies ohne Schleifen auszuführen ? (oder alternativ durch Schleifen, ohne zu wissen, wie viele FOLDERS
sich im Array befinden).
%
funktioniert für den einzelnen abschließenden Schrägstrich, der im Quest erwähnt wird. Funktioniert, wenn mehrere Schrägstriche vorhanden sind${parts[@]%%/*}
. Hier ist ein Link zu weiteren Informationen zum Thema Schrägstrich: Was bedeuten doppelte Schrägstriche im UNIX-Pfad? Ist 'cd dir / subdir // valid ...