Grundlagen des Zeichenketten-Abschneidens
Entfernen von führenden und nachfolgenden Leerzeichen
Eine der grundlegendsten Operationen beim Abschneiden von Zeichenketten (strings) in Bash ist das Entfernen von führenden und nachfolgenden Leerzeichen aus einer Zeichenkette. Dies kann mit den Parameter-Erweiterungen ${variable#pattern}
und ${variable%pattern}
erreicht werden.
## Example
variable=" Hello, World! "
trimmed_variable="${variable#"${variable%%[![:space:]]*}"}"
trimmed_variable="${trimmed_variable%"${trimmed_variable##*[![:space:]]}"}"
echo "$trimmed_variable" ## Output: "Hello, World!"
Im obigen Beispiel entfernen wir zunächst die führenden Leerzeichen mit der Erweiterung ${variable#"${variable%%[![:space:]]*"}
, die das längste Präfix der Variablen entfernt, das dem Muster "${variable%%[![:space:]]*}"
entspricht (das längste Präfix der Variablen, das nur Leerzeichen enthält).
Dann entfernen wir die nachfolgenden Leerzeichen mit der Erweiterung ${trimmed_variable%"${trimmed_variable##*[![:space:]]}"}
, die das längste Suffix der Variablen entfernt, das dem Muster "${trimmed_variable##*[![:space:]]}"
entspricht (das längste Suffix der Variablen, das nur Leerzeichen enthält).
Entfernen bestimmter Zeichen
Neben dem Entfernen von Leerzeichen können Sie auch bestimmte Zeichen vom Anfang oder Ende einer Zeichenkette entfernen, indem Sie die gleiche Syntax für die Parameter-Erweiterung verwenden.
## Example
variable="---Hello, World!+++"
trimmed_variable="${variable#"${variable%%[-+]*}"}"
trimmed_variable="${trimmed_variable%"${trimmed_variable##*[-+]}"}"
echo "$trimmed_variable" ## Output: "Hello, World!"
In diesem Beispiel entfernen wir die führenden und nachfolgenden "-" und "+"-Zeichen aus der Zeichenkette.
Umgang mit leeren Zeichenketten
Es ist wichtig zu beachten, dass Sie beim Arbeiten mit dem Abschneiden von Zeichenketten auch den Fall von leeren Zeichenketten berücksichtigen sollten. Bash bietet den :-
-Operator, um dieses Szenario zu behandeln.
## Example
variable=""
trimmed_variable="${variable#"${variable%%[![:space:]]*}"}"
trimmed_variable="${trimmed_variable%"${trimmed_variable##*[![:space:]]}"}"
echo "${trimmed_variable:-"The string is empty."}" ## Output: "The string is empty."
Durch die Verwendung des :-
-Operators können wir einen Standardwert angeben, der verwendet wird, wenn die abgeschnittene Variable eine leere Zeichenkette ist.