Что такое /usr/bin/[ и как его использовать?

Что такое /usr/bin/[ и как его использовать?

Я просматривал coreutils и нашел это как один из файлов, входящих в состав coreutils: /usr/bin/[. Что это такое [и что оно делает?

Это исполняемый файл. Я просто не знаю, что он делает и как его использовать.

$ file /usr/bin/[  
/usr/bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared  libs), for GNU/Linux 2.6.15, stripped  

Когда я пытаюсь запустить его, я думаю, что он по умолчанию использует встроенное расширение строки bash. Вместо того, чтобы фактически запустить файл.

$ "/usr/bin/["
/usr/bin/[: missing ‘]’
$ /usr/bin/\[
/usr/bin/[: missing ‘]’

решение1

Это эквивалент команды test. (См info test. .) Обычно она используется в скриптах в условных выражениях, например:

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

Закрывающая скобка необходима для заключения условного оператора. (Ну, похоже, она нужна просто для того, чтобы лучше выглядеть в коде. Кто-нибудь знает другие практические причины для этого?)

решение2

Это эквивалентно команде test.

Вместо

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

Вы можете использовать:

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

Его также можно использовать в циклах:

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

Вы также можете использовать их в однострочных предложениях, например:

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

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

Связанный контент