208 votes

bash affecte la valeur par défaut

${paramètre:=mot} Attribuer Des Valeurs Par Défaut. Si le paramètre n'est pas défini ou nulle, l' l'expansion de parole est attribué à le paramètre. La valeur du paramètre est ensuite substitué. De position paramètres et spécial les paramètres ne peuvent pas être affectés à de cette façon.

Je pensais que je pouvais utiliser cette fonction pour écrire ${A:=hello} au lieu de le plus A=${A:-hello}, mais maintenant, bash essaie également d'exécuter des "bonjour" et qui donne une commande introuvable. Un moyen d'éviter cela? Ou vais-je devoir s'en tenir à ce dernier? Quelqu'un peut-il donner un exemple où l'assigner par défaut est réellement utile?

284voto

camh Points 13169

Utilisez un colon:

 : ${A:=hello}
 

Les deux points sont une commande nulle qui ne fait rien et ignore ses arguments. Il est intégré à bash, de sorte qu'un nouveau processus n'est pas créé.

27voto

SiegeX Points 32614

L'extension du paramètre de valeur par défaut est souvent utile dans les scripts de construction, comme dans l'exemple ci-dessous. Si l'utilisateur appelle simplement le script tel quel, perl ne sera pas intégré. L'utilisateur doit explicitement définir WITH_PERL sur une valeur autre que "non" pour qu'il soit intégré.

 $ cat defvar.sh
#!/bin/bash

WITH_PERL=${WITH_PERL:-no}

if [[ "$WITH_PERL" != no ]]; then
    echo "building with perl"
    # ./configure --enable=perl
else
    echo "not building with perl"
    # ./configure
fi
 

Construire sans Perl

 $ ./defvar.sh
not building with perl
 

Construire avec Perl

 $ WITH_PERL=yes ./defvar.sh
building with perl
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X