Je suis depuis quelques temps à la recherche de l'explication d'une étrangeté que je trouve dans certains scripts. Par exemple dans /etc/init.d/mdadm
Au lieu d'utiliser $1 ou ${1}, les script contient ${1:-}
La seule explication que je connaise est que ${1:x} permet d'extraire le contenu de ${1} à partir du x-ième caractère. Mais '-' n'est pas un nombre.
Une idée sur ce que fais cette chose ?
Forum Programmation.shell Dialecte inconnu
9
mai
2009
# man bash
Posté par Infernal Quack (site web personnel) . Évalué à 9.
${parameter:-word} Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire
[^] # Re: man bash
Posté par gremous . Évalué à 3.
Je n'ai pas trouvé ça dans ma bible "Advanced Bash Scripting". Je viens de tester, effectivement:
# echo "${TOTO:-123}"
123
Je ne comprends par contre pas l'intérêt de mettre ${TOTO:-} car ça donne la même chose que ${TOTO} non ?
# echo "${TOTO:-}"
rien ne s'affiche lorsque TOTO n'est pas défini.
# echo "${TOTO}"
rien ne s'affiche lorsque TOTO n'est pas défini.
[^] # Re: man bash
Posté par Cereal Killer . Évalué à 0.
http://tldp.org/LDP/abs/html/refcards.html#AEN21717
[^] # Re: man bash
Posté par NeoX . Évalué à 2.
ainsi tu sais toujours ce que fait ton appel
et si demain tu veux le remplacer, c'est peut-etre aussi plus facile à maintenir
[^] # Re: man bash
Posté par Ozz . Évalué à 10.
set -eud'après man bash
-u Treat unset variables as an error when performing parameter expansion. If
expansion is attempted on an unset variable, the shell prints an error message,
and, if not interactive, exits with a non-zero status.
du coup
$ bash
$ set -eu
$ echo ${FOO:-}
$ echo ${FOO}
bash: FOO: unbound variable
$ echo $?
1
[^] # Re: man bash
Posté par Kerro . Évalué à 4.
A ne pas utiliser pour les variables internes, car ça masquerait les certains bugs.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.