Eine Minute
Shell-Skript: Pfad in einer Umgebungsvariable kürzen
Problem:
In einem Shell-Skript aus einer Umgebungsvariable, die einen Pfad enthält das letzte Verzeichnis löschen und einer anderen Variable zuweisen.
Lösung:
cut Tool benutzen.
Beispiel-Skript
#!/bin/sh
# Pfad zum Skript in die Umgebungsvariable SCRIPTPATH speichern (z.B. "/Users/jk/projects/cut/bin")
SCRIPTPATH=$(cd `dirname -- $0` && pwd)
# "/bin" entfernen:
BASEPATH=$(echo $SCRIPTPATH | rev | cut -d '/' -f 2- | rev)
# sollte z.B. "/Users/jk/projects/cut" ausgeben (also Skript Verzeichnis gekürzt um ein Verzeichnis)
echo $BASEPATH
Und so funktionierts
Als Beispiel-Pfad speichern wir das aktuelle Script-Verzeichnis in der Variable SCRIPTPATH, also z.B. /Users/jk/projects/cut/bin.
Die Variable geben wir mit echo $SCRIPTPATH aus, kehren sie mit rev um in nib/tuc/stcejorp/kj/sresU/ und teilen sie mit cut in eine Liste.
Als “Schnittpunkte” nutzen wir /. Dann schneiden wir das erste Element um (da wir den String vorher umgekehrt haben, ist das erste Element das letzte Verzeichis). Das Ergebnis gibt cut wieder aus: tuc/stcejorp/kj/sresU/ und wir leiten es erneut durch rev was es wieder umkehrt zu dem
gewünschten Ergebnis /Users/jk/projects/cut. Dieses speichern wir dann mit $( ... ) in die Variable $BASEPATH. Diese geben wir dann mit echo aus.
SysAdmin Linux Programmieren Shell KurzDoku OpenSource
180 Wörter
13.04.2019 02:00 (Letzte Aktualisierung: 27.02.2023 20:08)
a17f0c8a @ 27.02.2023