<Précédent | Table des matières | Suivant>
Extensions pour gérer les variables vides
Plusieurs extensions de paramètres sont destinées à traiter des variables inexistantes et vides. Ces extensions sont pratiques pour gérer les paramètres de position manquants et attribuer des valeurs par défaut aux paramètres.
${paramètre:-mot}
If paramètre n'est pas défini (c'est-à-dire n'existe pas) ou est vide, cette expansion entraîne la valeur de mot. Si paramètre n'est pas vide, le développement donne la valeur de paramètre.
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:-"valeur de substitution si non défini"}
valeur de remplacement si non défini [me@linuxbox ~]$ écho $foo
[moi@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:-"valeur de substitution si non défini"}
barre
[moi@linuxbox ~]$ écho $foo
barre
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:-"valeur de substitution si non défini"}
valeur de remplacement si non défini [me@linuxbox ~]$ écho $foo
[moi@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:-"valeur de substitution si non défini"}
barre
[moi@linuxbox ~]$ écho $foo
barre
${paramètre:=mot}
If paramètre n'est pas défini ou vide, cette expansion entraîne la valeur de mot. De plus, la valeur de mot est affecté à paramètre. Si paramètre n'est pas vide, l'expansion donne la valeur de paramètre.
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:="valeur par défaut si non défini"}
valeur par défaut si non défini [me@linuxbox ~]$ écho $foo valeur par défaut si non défini [me@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:="valeur par défaut si non défini"}
barre
[moi@linuxbox ~]$ écho $foo
barre
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:="valeur par défaut si non défini"}
valeur par défaut si non défini [me@linuxbox ~]$ écho $foo valeur par défaut si non défini [me@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:="valeur par défaut si non défini"}
barre
[moi@linuxbox ~]$ écho $foo
barre
Remarque : les paramètres de position et autres paramètres spéciaux ne peuvent pas être affectés de cette manière.
${paramètre:?mot}
If paramètre n'est pas défini ou vide, cette extension provoque la fermeture du script avec une erreur et le contenu de mot sont envoyés à l'erreur standard. Si paramètre n'est pas vide, le développement donne la valeur de paramètre.
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:?"le paramètre est vide"}
bash : foo : le paramètre est vide [me@linuxbox ~]$ écho $?
1
[moi@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:?"le paramètre est vide"}
barre
[moi@linuxbox ~]$ écho $?
0
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:?"le paramètre est vide"}
bash : foo : le paramètre est vide [me@linuxbox ~]$ écho $?
1
[moi@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:?"le paramètre est vide"}
barre
[moi@linuxbox ~]$ écho $?
0
${paramètre:+mot}
If paramètre n'est pas défini ou vide, l'expansion n'aboutit à rien. Si paramètre n'est pas vide, la valeur de mot est substitué à paramètre; cependant, la valeur de paramètre n'est pas modifié.
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:+"valeur de substitution si définie"}
[moi@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:+"valeur de substitution si définie"}
[moi@linuxbox ~]$ truc=
[moi@linuxbox ~]$ echo ${foo:+"valeur de substitution si définie"}
[moi@linuxbox ~]$ toto=bar
[moi@linuxbox ~]$ echo ${foo:+"valeur de substitution si définie"}
valeur de remplacement si définie
valeur de remplacement si définie