Che cos'è / usr / bin / [e come si usa?


26

Stavo guardando coreutils e ho trovato questo come uno dei file inclusi come parte di coreutils: /usr/bin/[. Che cos'è [e cosa fa?

È un eseguibile. Semplicemente non so cosa faccia o come usarlo.

$ file / usr / bin / [
/ usr / bin / [: eseguibile LSB a 32 bit ELF, Intel 80386, versione 1 (SYSV), collegato dinamicamente (usa librerie condivise), per GNU / Linux 2.6.15, rimosso

Quando provo a eseguirlo, penso che sia l'impostazione predefinita per l'espansione della linea integrata bash. Invece di eseguire effettivamente il file.

$ "/ usr / bin / ["
/ usr / bin / [: missing ] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [funziona su OS X.
Daniel Beck

Risposte:


33

È un equivalente del comando test. (Vedi info test.) Generalmente lo usi negli script in espressioni condizionali come:

if [ -n "$1" ]; then
    echo $1
fi

La parentesi di chiusura è necessaria per racchiudere il condizionale. (Beh, sembra che sia necessario solo per apparire più belli nel codice. Qualcuno sa qualche altro motivo pratico per questo?)


3
Si noti che [è sia una shell integrata che un programma esterno con lo stesso (o simile) utilizzo. In bash, quando corri [o teststai invocando il built-in.
Grawity,

È necessario perché se fosse facoltativo la sintassi sarebbe ambigua in determinate situazioni.
Casuale 832,

20

È equivalente al testcomando.

Invece di

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

Puoi usare:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

Può essere utilizzato anche nei loop:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

Puoi anche usarli con una linea come questa:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
begli esempi di come usarlo. "if / usr / bin / ["
nelaaro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.