Ich werde die variable Parametererweiterung von bash bald vergessen, also werde ich sie organisieren.
| Notation | Bedeutung |
|---|---|
| ${Variablennamen#Muster} | 最短マッチで、Musterに前方一致した部分を取り除く |
| ${Variablennamen##Muster} | 最長マッチで、Musterに前方一致した部分を取り除く |
| ${Variablennamen%Muster} | 最短マッチで、Musterに後方一致した部分を取り除く |
| ${Variablennamen%%Muster} | 最長マッチで、Musterに後方一致した部分を取り除く |
Es gibt viele andere Notationen als die oben genannten, aber vorerst gibt es vier.
$ {Variablenname #Pattern} ist eine` Parametererweiterung, die den Teil entfernt, der dem Muster mit der kürzesten Übereinstimmung vorausgeht.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath#*/}"
home/name/abc.txt
Die kürzeste Übereinstimmung ist die ** kürzeste ** Zeichenfolge, die dem angegebenen Muster entspricht.
| Muster | */ |
|---|---|
| String | /home/name/abc.txt |
| Kürzeste Übereinstimmung | Vor dem Haus/ |
| Ergebnis | home/name/abc.txt |
$ {Variablenname #Pattern} ist die längste Übereinstimmung und eine Parametererweiterung, die den Teil entfernt, der dem Muster vorausgeht.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath##*/}"
abc.txt
Die längste Übereinstimmung bezieht sich auf die ** längste ** Zeichenfolge, die dem angegebenen Muster entspricht.
| Muster | */ |
|---|---|
| String | /home/name/abc.txt |
| Längste Übereinstimmung | /home/name/ |
| Ergebnis | abc.txt |
Es kann verwendet werden, um den Dateinamen aus dem Dateipfad abzurufen.
$ {Variablenname% pattern} ist eine `Parametererweiterung, die den Teil entfernt, der dem Muster mit der kürzesten Übereinstimmung entspricht.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath%/*}"
/home/name
| Muster | /* |
|---|---|
| String | /home/name/abc.txt |
| Kürzeste Übereinstimmung | abc.txt |
| Ergebnis | /home/name |
Es kann verwendet werden, um das Verzeichnis des Dateipfads ohne den "Dateinamen" abzurufen.
$ {Variablenname %% Muster} ist die längste Übereinstimmung und ist eine Parametererweiterung, die den Teil entfernt, der dem Muster entspricht.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath%%/*}"
(Keiner)
| Muster | /* |
|---|---|
| String | /home/name/abc.txt |
| Längste Übereinstimmung | /home/name/abc.txt |
| Ergebnis | (Keiner) |
Neues Linux-Lehrbuch
Recommended Posts