Cosa programma il programma gnuwin32: [.exe?
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?
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
).