Что делает программа gnuwin32:[.exe делать?
Вопрос
В каталоге 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
).