Comment déterminer si une variable bash est vide ?

Quelle est la meilleure façon de déterminer si une variable dans bash est vide ("&quot ;)?

J'ai entendu dire qu'il est recommandé de faire `if [ "x$variable&quot ; = "x&quot ; ]``.

Est-ce la façon correcte de procéder ? (il doit y avoir quelque chose de plus simple)

Solution

Ceci renverra vrai si une variable est non définie ou définie par la chaîne vide ("&quot ;).

if [ -z "$VAR" ];
Commentaires (10)

-z est le meilleur moyen.

Une autre option que j'ai utilisée est de définir une variable, mais elle peut être remplacée par une autre variable, par ex.

export PORT=${MY_PORT:-5432}

Si la variable $MY_PORT est vide, alors PORT est défini à 5432, sinon PORT est défini à la valeur de MY_PORT. Notez que la syntaxe inclut les deux-points et le tiret.

Commentaires (1)

Si vous souhaitez distinguer les cas de statut set-empty et unset, regardez l'option -u de bash :

$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z "$BAR" ] && echo true
bash: BAR: unbound variable
$ BAR=""
$ echo $BAR

$ [ -z "$BAR" ] && echo true
true
Commentaires (0)