Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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.