GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Einer Variablen in Bash nur einen Teil einer Zeichenfolge zuweisen?

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.


Ubuntu
  1. Vollständige Ansicht, wo die Pfadvariable in Bash festgelegt ist?

  2. Wie erlaubt man nur bestimmte Zeichen in einer Bash-Variablen?

  3. Wie kann man den Inhalt einer String-Variable eingeben?

  4. So teilen Sie eine Zeichenfolge in Bash-Skript auf

  5. Alias ​​mit Variable in Bash

Bash-Exportvariable

Bash Strings verketten

Ersetzen von Zeichenfolgen in Bash

Bash-Scripting – String-Manipulation

So setzen Sie die Umgebungsvariable in Bash

Hinzufügen von Ordnern zu Ihrer Pfadumgebungsvariablen?