J'oublierai bientôt l'expansion des paramètres variables de bash, donc je vais l'organiser.
notation | sens |
---|---|
${Nom de variable#modèle} | 最短マッチで、modèleに前方一致した部分を取り除く |
${Nom de variable##modèle} | 最長マッチで、modèleに前方一致した部分を取り除く |
${Nom de variable%modèle} | 最短マッチで、modèleに後方一致した部分を取り除く |
${Nom de variable%%modèle} | 最長マッチで、modèleに後方一致した部分を取り除く |
Il existe de nombreuses notations autres que celles ci-dessus, mais pour le moment, il y en a quatre.
$ {Nom de la variable #Pattern}
est une extension de paramètre qui supprime la partie qui précède le motif avec la `correspondance la plus courte.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath#*/}"
home/name/abc.txt
La correspondance la plus courte est la chaîne ** la plus courte ** qui correspond au modèle spécifié.
modèle | */ |
---|---|
Chaîne | /home/name/abc.txt |
Match le plus court | Devant la maison/ |
résultat | home/name/abc.txt |
$ {Nom de la variable #Pattern}
est la plus longue correspondance, et est une
extension de paramètre qui supprime la partie qui précède le motif.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath##*/}"
abc.txt
La correspondance la plus longue fait référence à la chaîne ** la plus longue ** qui correspond au modèle spécifié.
modèle | */ |
---|---|
Chaîne | /home/name/abc.txt |
Match le plus long | /home/name/ |
résultat | abc.txt |
Il peut être utilisé pour «obtenir le nom du fichier» à partir du chemin du fichier.
$ {Nom de la variable% pattern}
est une extension de paramètre qui supprime la partie de fin du modèle avec la
plus courte correspondance.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath%/*}"
/home/name
modèle | /* |
---|---|
Chaîne | /home/name/abc.txt |
Match le plus court | abc.txt |
résultat | /home/name |
Il peut être utilisé pour obtenir le répertoire du chemin du fichier sans le nom de fichier
.
$ {Nom de la variable %% pattern}
est une extension de paramètre qui supprime la partie qui est la plus longue correspondance et la partie de fin du motif.
.sh
#!/bin/bash
filepath=/home/name/abc.txt
echo "${filepath%%/*}"
(Aucun)
modèle | /* |
---|---|
Chaîne | /home/name/abc.txt |
Match le plus long | /home/name/abc.txt |
résultat | (Aucun) |
Nouveau manuel Linux
Recommended Posts