Что делает программа gnuwin32: [.exe? - PullRequest
3 голосов
/ 19 ноября 2008

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

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

$ [
[: missing `]'
$

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

$ [ ]

$

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

$ [ hello ]

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

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

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

Ответы [ 3 ]

6 голосов
/ 19 ноября 2008
test a

==

[ a ]

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

Изменить: чтобы уточнить, это условный синтаксис, например, ["a" = "a"]

5 голосов
/ 19 ноября 2008

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

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

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

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

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

0 голосов
/ 19 ноября 2008

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

...