[]
против [[ ]]
в общем покрыто на Является ли [[]] предпочтительнее [] в скриптах bash? , поэтому давайте не будем его трогать.
=
против ==
:
Внутри []
Поэтому используйте только =
, так как он более портативный и короткий.
Внутри [[]]
[[ ]]
не является POSIX, поэтому мы ссылаемся только на man bash
.
В CONDITIONAL EXPRESSIONS
говорится, что =
и ==
одинаковы внутри [[ ]]
и что оба выполняют сопоставление с образцом, как описано в "Составных командах".
Тогда "Составные команды" - это тот же шаблон, который используется для расширения глобуса, например ::1010.
[[ 'abcde' = ?b[cC]* ]] && echo true
возможно с extglob
расширениями.
Обратите внимание, что вы должны не заключать в кавычки шаблон: он не будет расширяться до файлов, как обычно. Если вы его цитируете, вы теряете магию сопоставления с образцом и получаете буквальные символы.