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