2011-03-05 5 views
0

Comment puis-je écrire un script shell POSIX qui fait deux choses:Question sur Conditionals

1) Lorsque var1 $ OU $ var2 est défini et non nul, echo ""
2) Lorsque var3 $ est défini avec quoi que ce soit, echo "success2"

J'ai essayé de nombreuses combinaisons des opérateurs -ne -z et -a mais je n'ai pas eu de chance.

Répondre

2

(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.

+0

Merci. J'ai négligé les citations autour des invocations variables qui semblent donner des résultats discordants. – kaykun

Questions connexes