Was ist / usr / bin / [und wie verwende ich es?

5286
nelaaro

Ich war auf der Suche auf coreutils und fand dies als eine der Dateien als Teil coreutils enthalten: /usr/bin/[. Was ist [und was macht es?

Es ist eine ausführbare Datei. Ich weiß nur nicht, was es macht oder wie man es benutzt.

$ file / usr / bin / [
/ usr / bin / [: ELF-ausführbare 32-Bit-LSB-Datei, Intel 80386, Version 1 (SYSV), dynamisch verknüpft (verwendet gemeinsam genutzte Bibliotheken), für GNU / Linux 2.6.15, gestrippt

Wenn ich versuche, es auszuführen, denke ich, dass es standardmäßig die eingebaute Zeilenerweiterung von bash ist. Anstatt die Datei tatsächlich auszuführen.

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

25
Siehe http://serverfault.com/questions/138951/what-is-usr-bin uloBasEI vor 12 Jahren 4
`man [` arbeitet auf OS X. Daniel Beck vor 12 Jahren 2

2 Antworten auf die Frage

33
Rajish

Es entspricht dem Befehl test. (Siehe info test.) Im Allgemeinen verwenden Sie es in Skripts in bedingten Ausdrücken wie:

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

Die schließende Klammer ist erforderlich, um die Bedingung einzuschließen. (Nun, es sieht so aus, als wäre es nur erforderlich, um im Code besser auszusehen. Weiß jemand einen anderen praktischen Grund dafür?)

Beachten Sie, dass `[` * sowohl * eine eingebaute Shell als auch ein externes Programm mit der gleichen (oder ähnlichen) Verwendung ist. Wenn Sie in bash `[` oder `test` ausführen, rufen Sie das integrierte auf. grawity vor 12 Jahren 3
Dies ist erforderlich, da die Syntax in bestimmten Situationen mehrdeutig wäre, wenn sie optional wäre. Random832 vor 12 Jahren 0
20
dogbane

Es entspricht dem testBefehl.

Anstatt

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

Sie können verwenden:

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

Es kann auch in Schleifen verwendet werden:

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

Sie können sie auch in Einzeilen wie folgt verwenden:

[ -z "$VAR" ] && echo VAR not set && exit  [ -f foo.txt ] && cat foo.txt 
schöne Beispiele, wie man es benutzt. "if / usr / bin / [" nelaaro vor 12 Jahren 2