Что такое / usr / bin / [и как мне его использовать?
5245
nelaaro
Я смотрел на Coreutils и нашел это, как один из файлов, включенных в часть Coreutils: /usr/bin/[. Что это такое [и что оно делает?
Это исполняемый файл. Я просто не знаю, что он делает или как его использовать.
$ file / usr / bin / [ / usr / bin / [: исполняемый 32-разрядный LSB ELF, Intel 80386, версия 1 (SYSV), динамически связанный (использует общие библиотеки), для GNU / Linux 2.6.15, раздетый
Когда я пытаюсь запустить его, я думаю, что по умолчанию используется bash, встроенный в расширение строки. Вместо того, чтобы фактически запустить файл.
$ "/ usr / bin / [" / usr / bin / [: отсутствующий ] ']' $ /usr/bin/\[ /usr/bin/[: missing
См. Http://serverfault.com/questions/138951/what-is-usr-bin
uloBasEI 12 лет назад
4
`man [` работает на OS X.
Daniel Beck 12 лет назад
2
2 ответа на вопрос
33
Rajish
Это эквивалент команды test. (См info test.) Обычно вы используете его в скриптах в условных выражениях, таких как:
if [ -n "$1" ]; then echo $1 fi
Закрывающая скобка обязательна для включения условного выражения. (Что ж, похоже, требуется просто выглядеть в коде лучше. Кто-нибудь знает какие-либо другие практические причины для этого?)
Обратите внимание, что `[` является * одновременно * встроенной оболочкой и внешней программой с одинаковым (или похожим) использованием. В bash, когда вы запускаете `[` или `test`, вы вызываете встроенное.
grawity 12 лет назад
3
Это необходимо, потому что если бы это было необязательно, синтаксис был бы неоднозначным в определенных ситуациях.
Random832 12 лет назад
0
20
dogbane
Это эквивалентно 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
хорошие примеры того, как его использовать. "если / usr / bin / ["
nelaaro 12 лет назад
2