Co to jest / usr / bin / [i jak go używać?


26

Szukałem na coreutils i znalazł to jako jeden z plików zawartych w ramach coreutils: /usr/bin/[. Co to jest [i co robi?

Jest to plik wykonywalny. Po prostu nie wiem, co robi i jak go używać.

$ plik / usr / bin / [
/ usr / bin / [: wykonywalny ELF 32-bitowy plik LSB, Intel 80386, wersja 1 (SYSV), dynamicznie połączony (używa współdzielonych bibliotek), dla GNU / Linux 2.6.15, pozbawiony

Kiedy próbuję go uruchomić, myślę, że domyślnie jest to wbudowane rozszerzenie bash. Zamiast faktycznie uruchamiać plik.

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



2
man [działa na OS X.
Daniel Beck

Odpowiedzi:


33

To odpowiednik polecenia test. (Zobacz info test.) Zasadniczo używasz go w skryptach w wyrażeniach warunkowych, takich jak:

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

Wspornik zamykający jest wymagany, aby zawrzeć warunek. (Cóż, wygląda na to, że wymagane jest tylko ładniejsze wyglądanie kodu. Czy ktoś zna jakiś inny praktyczny powód?)


3
Zauważ, że [jest to zarówno wbudowana powłoka, jak i zewnętrzny program o takim samym (lub podobnym) użyciu. W bashu, gdy uruchamiasz [lub testwywołujesz wbudowane.
grawitacja

Jest to wymagane, ponieważ jeśli byłoby opcjonalne, w niektórych sytuacjach składnia byłaby niejednoznaczna.
Random832

20

Jest to odpowiednik testpolecenia.

Zamiast

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

Możesz użyć:

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

Może być również używany w pętlach:

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

Możesz także użyć ich w liniach takich jak ten:

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

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

2
ładne przykłady jak go używać. „if / usr / bin / [”
nelaaro,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.