98 votes

Comment construire une affectation conditionnelle dans Bash ?

Je cherche un moyen de construire des affectations conditionnelles dans Bash :

En Java, il ressemble à ceci :

int variable= (condition) ? 1 : 0;

89voto

Demosthenex Points 1847

Si vous souhaitez définir des valeurs par défaut dans un script shell, utilisez le code suivant :

: ${VAR:="default"}

Oui, la ligne commence par ':'. Je l'utilise dans les scripts shell afin de pouvoir remplacer les variables dans ENV, ou utiliser la valeur par défaut.

Ceci est lié parce que c'est mon cas d'utilisation le plus courant pour ce type de logique. ;]

83voto

Anthony Forloney Points 30083

Selon le commentaire de Jonathan :

variable=$(( 1 == 1 ? 1 : 0 ))  

MODIFIER :

J'ai révisé la réponse originale qui ne représentait que echo de la valeur de l'opérateur de condition, elle n'affichait en fait aucune tâche.

50voto

Kevin Little Points 5406
myvar="default" && [[ <some_condition_is_true> ]]  && myvar="non-default"

exemples réels :

DELIM="" && [[ "$APP_ENV_RESOLVED" != "" ]] && DELIM=$INNER_DELIM

La condition peut être "(( ... ))" aussi bien :

filepath=/proc/drbd && (( $# > 0 )) && filepath=$1

47voto

Pierre Maoui Points 346

Je voulais faire un devoir conditionnel avec des cordes et j'ai fini avec :

SOWHAT=$([ "$MYVALUE" = "value" ] && echo "YES" || echo "NO")

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