(→Définir une variable uniquement si elle est indéfinie ou nul) |
|||
| Ligne 4 : | Ligne 4 : | ||
Manipulations des variables en Bash | Manipulations des variables en Bash | ||
| - | + | <br> | |
| - | Les exemples ci-dessous sont réalisés avec une variable nommée '''VAR'''. | + | Les exemples ci-dessous sont réalisés avec une variable nommée '''VAR'''.<br> |
| - | le caractère générique "*" remplace 1 ou plusieurs caractères différents | + | le caractère générique "*", peut être utilisé, et remplace 1 ou plusieurs caractères différents.<br> |
==Longueur de la variable== | ==Longueur de la variable== | ||
| Ligne 99 : | Ligne 99 : | ||
azetyU | azetyU | ||
</pre> | </pre> | ||
| + | <br> | ||
| + | le caractère "*" est un caractère générique qui remplace 1 ou plusieurs caractères differents. | ||
<br> | <br> | ||
<pre> | <pre> | ||
| Ligne 107 : | Ligne 109 : | ||
TYUIOPQSD | TYUIOPQSD | ||
</pre> | </pre> | ||
| - | le caractère | + | <br> |
| - | + | [AB] signifie le caractère A ou le caractère B<br> | |
| - | + | [AB[AB][AB][AB] signifie 4 caractères ( A ou B) qui se suivent | |
| - | + | <br> | |
| + | <pre> | ||
VAR=ABABAB_TOTO | VAR=ABABAB_TOTO | ||
| - | echo ${VAR#[AB][AB][AB][AB]} | + | echo ${VAR#[AB][AB][AB][AB]} |
| + | </pre> | ||
| + | <pre> | ||
| + | AB_TOTO | ||
| + | </pre> | ||
| + | <br> | ||
==Suppression de la plus longue chaine, a partir du début== | ==Suppression de la plus longue chaine, a partir du début== | ||
| Ligne 146 : | Ligne 154 : | ||
</pre> | </pre> | ||
| - | =chercher et remplacer dans une variable= | + | ==chercher et remplacer une sous-chaîne dans une variable== |
| - | + | Il y a 2 possibilités: la première occurrence ou toutes les occurrences: | |
| - | + | <pre> | |
| - | + | ${VAR/recherche/remplacé par} # première occurrence | |
| - | ${VAR/recherche/ | + | ${VAR//recherche/remplacé par} # toutes les occurrences |
| - | ${VAR//recherche/ | + | </pre> |
| - | + | <br> | |
| - | Dans tous les cas, c'est | + | Dans tous les cas, c'est la sous-chaîne la plus grande correspondant à "recherche" qui sera remplacée. <br> |
| + | <pre> | ||
| + | VAR=abcABC123ABCabc | ||
| + | echo ${VAR/b*c/Z} | ||
| + | </pre> | ||
| + | <pre> | ||
| + | aZ | ||
| + | </pre> | ||
| + | ===chercher et remplacer la première sous-chaîne d'une variable=== | ||
| + | <pre> | ||
VAR=abcABC123ABCabc | VAR=abcABC123ABCabc | ||
| - | echo ${VAR/ | + | echo ${VAR/#abc/---} |
| - | + | </pre> | |
| - | + | <pre> | |
| + | ---ABC123ABCabc | ||
| + | </pre> | ||
| + | ===chercher et remplacer dernière sous-chaîne d'une variable=== | ||
| + | <pre> | ||
VAR=abcABC123ABCabc | VAR=abcABC123ABCabc | ||
| - | echo ${VAR/ | + | echo ${VAR/%abc/---} |
| - | + | </pre> | |
| + | <pre> | ||
| + | abcABC123ABC--- | ||
| + | </pre> | ||
| - | + | ==Renvoyer une valeur de substitution lorsque la variable n'existe pas== | |
| - | + | si VAR est défini (avec une valeur ou avec nul), on retourne sa valeur, y compris nul, sinon, si VAR est indéfini, on retourne défaut, sans changer ni la valeur, ni l’état de VAR. | |
| + | <pre> | ||
| + | unset VAR # on supprime VAR si elle existe | ||
| + | echo ${VAR-defaut} | ||
| + | </pre> | ||
| + | <pre> | ||
| + | defaut | ||
| + | </pre> | ||
| - | + | Si l'on souhaite que la valeur retournée soit non nul, on peut utiliser la syntaxe : <b>${VAR:-defaut}</b>. | |
| - | + | ||
| - | + | ||
Par exemple : | Par exemple : | ||
| + | <pre> | ||
| + | declare VAR # VAR existe, mais est nul | ||
| + | echo ${VAR-valeur_par_defaut} | ||
| + | </pre> | ||
| + | <pre> | ||
| - | + | </pre> | |
| - | + | <pre> | |
| - | echo ${VAR:-valeur_par_defaut} | + | echo ${VAR:-valeur_par_defaut} |
| + | </pre> | ||
| + | <pre> | ||
| + | valeur_par_defaut | ||
| + | </pre> | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | + | Pour substituer une valeur (ici une chaîne: defaut) a une variable indéfinie:<br> | |
| + | <pre> | ||
| + | ${VAR-defaut} | ||
| + | </pre> | ||
| + | <br> | ||
| + | Pour substituer une valeur (ici une chaîne: defaut) a une variable indéfinie ou nul: <br> | ||
| + | <pre> | ||
| + | ${VAR:-defaut} | ||
| + | </pre> | ||
| + | <br> | ||
| + | Cette syntaxe ne défini pas ou ne modifie pas la valeur de VAR. | ||
| - | + | ==Définir une variable uniquement si elle est indéfinie== | |
| - | echo ${VAR=valeur_par_defaut} # | + | définir VAR si elle n'est pas définie :<br> |
| - | echo ${VAR:=valeur_par_defaut} | + | <pre> |
| - | + | unset VAR # VAR n'est pas défini | |
| + | echo ${VAR=valeur_par_defaut} | ||
| + | </pre> | ||
| + | <pre> | ||
| + | valeur_par_defaut | ||
| + | </pre> | ||
| + | <br> | ||
| + | ==Définir une variable uniquement si elle est indéfinie ou nul== | ||
| + | définir VAR lorsque nul :<br> | ||
| + | <pre> | ||
| + | VAR= # défini VAR a nul | ||
| + | echo ${VAR:=valeur_par_defaut} | ||
| + | </pre> | ||
| + | <pre> | ||
| + | valeur_par_defaut | ||
| + | </pre> | ||
| + | <br> | ||
| - | + | ==remplacer momentanément la valeur d'une variable non nul== | |
VAR=valeur_1 | VAR=valeur_1 | ||
| Ligne 208 : | Ligne 268 : | ||
echo ${VAR?pas definie} # rien, valeur nulle autorisée | echo ${VAR?pas definie} # rien, valeur nulle autorisée | ||
echo ${VAR:?valeur nulle} # -bash: VAR: pas definie (sur stderr) | echo ${VAR:?valeur nulle} # -bash: VAR: pas definie (sur stderr) | ||
| - | |||
| - | |||