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