2015-09-07 1 views
-1

Expliquez s'il vous plaît, qu'est-ce que cette construction signifie:

foo=${bar:-"const"} 
foo=${bar:+"const"} # not sure about using this construction at all 

Par exemple:

PATH=${PATH}:${BUILD_DIR:-"/SCA"}/tools 
... 
if [[ ${DEBUG:-""} = "ON" ]] ; then <...>; fi 

J'ai essayé de le regarder sur ABSG, a essayé de lire man builtin, mais c'est encore compliqué pour moi maintenant. AFAIK, il est juste comme affectation à $foo une certaine valeur, avec NULL-vérifier de la variable $bar.

+2

Voir la page de manuel sous "Expansion des paramètres"; les deux que vous demandez sont "Utiliser les valeurs par défaut" et "Utiliser une valeur alternative". – chepner

+0

Vous l'avez compris. Il suffit de passer 10 minutes à faire 'echo $ {foo: -xxx}' etc. Bonne chance. – shellter

Répondre

0

${bar-const} évalue à la chaîne 'const' est la barre est unset. ${bar:-const} évalue à la chaîne 'const' si la barre est désactivée ou la chaîne vide. ${bar+const} évalue à la chaîne 'const' si la barre est définie. ${bar:+const} évalue la chaîne 'const' si la barre est définie et non la chaîne vide.

Les deux derniers évaluent la chaîne vide autrement, et les deux premiers évaluent à $ bar autrement.