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