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
Siehe http://serverfault.com/questions/138951/what-is-usr-bin
uloBasEI vor 13 Jahren
4
`man [` arbeitet auf OS X.
Daniel Beck vor 13 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 13 Jahren
3
Dies ist erforderlich, da die Syntax in bestimmten Situationen mehrdeutig wäre, wenn sie optional wäre.
Random832 vor 13 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 13 Jahren
2