2012-11-08 9 views

risposta

10

if [ false ] equivale a if [ -n "false" ] - sta testando la lunghezza della stringa. Se stai provando a testare il codice di uscita di /bin/false, usa if false (no [, che per molte, ma non tutte, le moderne shell è una shell costruita all'incirca equivalente a /usr/bin/[ o /usr/bin/test).

+0

Questo lo spiega meglio delle altre risposte, ma '[' sta per essere il comando incorporato, non il binario esterno. – jordanm

+0

@jordanm Vero per alcune shell, ma non tutte ... Anche se, immagino, l'OP è stato taggato con 'bash' per il quale' ['è interno ... Chiarito la risposta un po ', a prescindere. – twalberg

3

true e false non sono builtin parole chiave per booleano in bash stesso modo lo sono per altri linguaggi di programmazione

È possibile simulare la prova del vero falsa condizione di una variabile/come segue:

cond1="true" 
cond2="false" 

if [ "$cond1" = "true" ]; then 
    echo "First condition is true" 
fi 

if [ "$cond2" = "false" ]; then 
    echo "Second condition is false" 
fi 

Quando si sta facendo:

if [ false ] 

si traduce implicitamente

if [ -n "false" ] 

Qualora il -n denota "test se questo ha lunghezza maggiore di 0: logicamente vera se è così, logicamente falsa altrimenti"

parte - true e false effettivamente fare qualcosa, ma sono i comandi:

man true 
man false 

Per saperne di più su di loro.

Problemi correlati