Domanda

Guardando nella directory gnuwin32 / bin, c'è un file di programma dall'aspetto strano chiamato [.exe

Non sono riuscito a trovarlo nella documentazione, gnuwin32.sourceforge.net o in una ricerca su Google, quindi l'ho eseguito e ho ottenuto:

$ [
[: missing `]'
$

quindi l'ho dato] come parametro e ho

$ [ ]

$

Non si è lamentato, quindi ho pensato che fosse sulla buona strada. Ho provato:

$ [ hello ]

di nuovo, nessuna lamentela. così ho provato un'espressione aritmetica:

$ [ 1 + 1 ]
[: +: binary operator expected
$

Ho provato un sacco di combinazioni diverse, tra cui prefisso & amp; notazione postfissa ma nulla sembra funzionare. Cosa fa questa cosa?

È stato utile?

Soluzione

È usato per valutare le espressioni condizionali .
È equivalente (eventualmente un link simbolico a?) L'eseguibile test .
La manpage è qui .

Puoi vederlo in molti script bash:

if [ "$LOGNAME" = "scott" ]
then
    echo "Logged in as Scott"
else
     echo "incorrect user"
fi

La cosa divertente è che il [ non fa parte del linguaggio bash, è in realtà un eseguibile il cui codice di ritorno viene utilizzato da 'IF'. Questo è il motivo per cui lo spazio dopo il [ e il suo primo argomento sono obbligatori: se venisse omesso, lo script cercherebbe di eseguire [ " $ LOGNAME " e fallisci

Non puoi eseguire operazioni aritmetiche con esso - usa expr per questo (vedi qui ). Tuttavia, è possibile verificare un'ampia gamma di proprietà dei file (esiste? Di che tipo è? Ecc.) Nonché utilizzare operatori di confronto su stringhe e numeri.

Altri suggerimenti

test a

==

[ a ]

È solo zucchero

Modifica: per chiarire, questa è la sintassi condizionale, ad es. [" a " = " a " ]

Un'altra risposta già menzionata è la stessa di test . Su bash, è anche un builtin, quindi puoi ottenere aiuto con help builtin ( help test ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top