Ich erhalte vom Benutzer einen bestimmten absoluten Dateipfad und möchte eine Variable erstellen, die eine Zeichenfolge ist, die nicht nur das FIRST enthält zwei Komponenten des Dateipfads, aber ohne es zu drucken oder so.
Der absolute Pfad könnte beispielsweise wie folgt lauten:
/home/myusername/folder1/folder2/folder3
Und es ist in „target_path“ gespeichert, und ich möchte, dass „mydir“ nur Folgendes ist:
/folder1/folder2/folder3
Ich habe versucht, den Cut-Befehl auf verschiedene Arten zu verwenden, aber ohne Erfolg.
Akzeptierte Antwort:
Verwendung der String-Manipulation von bash:
$ a=/home/myusername/folder1/folder2/folder3
$ echo "${a#/*/*/}"
folder1/folder2/folder3
Die gewünschte Zeichenfolge wäre also (unter Hinzufügung des führenden Schrägstrichs):
b="/${a#/*/*/}"
Für eine Variable a
, ${a#foo}
entfernt die kürzeste Zeichenfolge, die foo
entspricht von start von a
. Also entfernen wir die kürzeste Zeichenfolge, die drei /
enthält (einschließlich des führenden Schrägstrichs im Pfad), um die ersten beiden Komponenten des absoluten Pfads zu entfernen.