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 ?
# man bash
Posté par Infernal Quack (site web personnel) . Évalué à 9.
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 -eu
d'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.