(J'ai testé les éléments suivants dans un shell Bash en mode POSIX - Je ne suis pas absolument certain que tout cela est strictement Posix)
$ var1=
$ var2=
$ if [ -n "$var1" -o -n "$var2" ]; then echo "success"; fi
$ var2=1
$ if [ -n "$var1" -o -n "$var2" ]; then echo "success"; fi
success
$ var3=
$ if [ -n "${var3+X}" ]; then echo "success2"; fi
success2
$ unset var3
$ if [ -n "${var3+X}" ]; then echo "success2"; fi
$
La première condition [ -n "$var1" -o -n "$var2" ]
profite du fait que le sans but L'exigence null implique également que les variables sont définies.
Le deuxième cas est plus compliqué. "${var3+X}"
expands à var3
est désactivé et à X
s'il est défini. De cette façon, vous pouvez différencier les variables non définies et nulles.
Merci. J'ai négligé les citations autour des invocations variables qui semblent donner des résultats discordants. – kaykun