OVH Cloud OVH Cloud

[bash]

1 réponse
Avatar
jip
bonjour,

[espérant ne pas être totalement hors charte]

Dans un script bash, je lis:

exec /usr/local/f-prot ${@+"$@"}

qui peut m'expliquer la signification profonde de:
${@+"$@"}

?

merci,

jip

1 réponse

Avatar
Julien Salgado
jip a écrit(wrote):
bonjour,


Bonjour,

[espérant ne pas être totalement hors charte]


Se serait mieux sur fr.comp.os.unix mais bon...

Dans un script bash, je lis:

exec /usr/local/f-prot ${@+"$@"}

qui peut m'expliquer la signification profonde de:
${@+"$@"}

?


Euh moi:)

Commençons par la signification de $@: cette variable est la liste de
tous les arguments qui ont été passé au programme shell. Exemples:
Pour: prog.sh a b c
On a: $@ -> a b c

Pour: prog.sh a "b c"
On a: $@ -> a b c (La même chose...)


Pour "$@", c'est la liste des arguments mais protégé par des guillemets
Pour: prog.sh a b c
On a: "$@" -> "a" "b" "c"

Pour: prog.sh a "b c"
On a: $@ -> a "b c" (ce qui est un peu mieux)

Maintenant la syntaxe ${a:+trucmuch} (il semble qu'on puisse ommettre
les deux points), ce fait de la manière suivante:
- on teste si $a est nul ou indéfini ;
- si ce n'est pas le cas on évalue la valeur de trucmuch et on retourne
cette valeur.

Exemple
a=1
b=2
${a:+$b} -> 2
${c:+$b} -> (rien)

Donc pour ${@+"$@"}, on retourne la liste des arguments protégés par des
guillemets si et seulement si cette liste est non vide. Mais bon "$@"
aurait peut être suffit.


merci,

jip



--
Julien