Вопрос

В каталоге gnuwin32/bin есть странный программный файл с именем [.exe

Я не смог найти его в документации, gnuwin32.sourceforge.net или в поиске Google, поэтому запустил его и получил:

$ [
[: missing `]'
$

поэтому я дал это] в качестве параметра и получил

$ [ ]

$

Он не жаловался, поэтому я предположил, что он на правильном пути.Я пытался:

$ [ hello ]

повторюсь, никаких претензий.поэтому я попробовал арифметическое выражение:

$ [ 1 + 1 ]
[: +: binary operator expected
$

Я попробовал кучу разных комбинаций, включая префиксную и постфиксную нотацию, но ничего не помогло.Что делает эта штука?

Это было полезно?

Решение

Используется для оценки условных выражений.
Он эквивалентен (возможно, символической ссылке на?) Исполняемого файла test .
Страница руководства находится здесь .

Вы можете увидеть это во многих скриптах bash:

if [ "$LOGNAME" = "scott" ]
then
    echo "Logged in as Scott"
else
     echo "incorrect user"
fi

Самое смешное, что [ не является частью языка bash, это фактически исполняемый файл, код возврата которого используется 'IF'. По этой причине пробел после [ и его первого аргумента является обязательным - если его опустить, скрипт попытается выполнить [ " $ LOGNAME " и не удалось.

Вы не можете выполнять арифметические операции с ним - используйте для этого expr (см. здесь ). Тем не менее, вы можете проверить широкий диапазон свойств файла (существует ли он, какой это тип? И т. Д.), А также использовать операторы сравнения для строк и чисел.

Другие советы

test a

==

[ a ]

Это просто сахар

Редактировать:Чтобы уточнить, это условный синтаксис, например.[ "а" = "а" ]

Другой ответ уже упоминал, что он такой же, как test . В bash он также является встроенным, поэтому вы можете получить справку по нему с помощью встроенного help ( help test ).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top