В чем разница между двойными и одинарными квадратными скобками [и [[а также знаками равенства = и ==? - PullRequest
1 голос
/ 01 декабря 2011

Я не могу найти разницу между:

[ $foo = b* ]
[ $foo == b* ]

[[ $foo = b* ]]
[[ $foo == b* ]]

Ответы [ 2 ]

0 голосов

[] против [[ ]] в общем покрыто на Является ли [[]] предпочтительнее [] в скриптах bash? , поэтому давайте не будем его трогать.

= против ==:

Внутри []

Поэтому используйте только =, так как он более портативный и короткий.

Внутри [[]]

[[ ]] не является POSIX, поэтому мы ссылаемся только на man bash.

В CONDITIONAL EXPRESSIONS говорится, что = и == одинаковы внутри [[ ]] и что оба выполняют сопоставление с образцом, как описано в "Составных командах".

Тогда "Составные команды" - это тот же шаблон, который используется для расширения глобуса, например ::1010.

[[ 'abcde' = ?b[cC]* ]] && echo true

возможно с extglob расширениями.

Обратите внимание, что вы должны не заключать в кавычки шаблон: он не будет расширяться до файлов, как обычно. Если вы его цитируете, вы теряете магию сопоставления с образцом и получаете буквальные символы.

0 голосов
/ 01 декабря 2011

Разница между [] и [[]] проверка это

Разница между = и ==

= является оператором присваивания

== оператор проверки равенства ИЛИ условный оператор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...