Expansion des paramètres de variable Bash

introduction

J'oublierai bientôt l'expansion des paramètres variables de bash, donc je vais l'organiser.

Partie de l'expansion des paramètres bash

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.

Exemple d'utilisation

$ {Nom de variable #Pattern}

$ {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}

$ {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}

$ {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}

$ {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)

référence

Nouveau manuel Linux

Recommended Posts

Expansion des paramètres de variable Bash
[Python] Utilisation correcte de la carte
Expansion des paramètres de variable Bash
expansion de variable python, format
À propos de la variable du chainer
[Mémo personnel] Achèvement automatique du bash
Gestion des devis en [bash]
Extension du dictionnaire python par argument
Jugement de vacances, y compris les vacances avec bash