[[ ]] vs [ ] Не каждый знает чем, отличается использование двойных квадратных скобок в скриптах от одинарных. Сейчас расскажу, устраивайся поудобнее. Я тоже одно время не обращал на это внимание. Просто писал где-то одинарные, где-то двойные, наверное от погоды зависело. Но в какой-то момент меня это начало ковырять. Пришлось разобраться.
В общем как оказалось все просто. Скрипты с двойными скобками будут работать нативно в bash и ksh. А вот во всяких POSIX оболочках таких, как например sh (и в других на основе sh) - выпадет ошибка.
А еще в двойных скобках можно использовать операторы: ||, &&, <, ==, =~. А вот с sh такое провернуть не получится.
При использовании оператора < в двойных скобках, экранирование не нужно.
#/bin/sh
[ "$s < abc" ]
#/bin/bash
[[ abc < abc ]]
Ну и главная киллер-фича двойных скобок это - возможность пользоваться регулярными выражениями. ➕ Подпишись на BashDays в телеграм
Примеры:
#/bin/bash
s="abc123"
[[ "$s" == abc* ]] # true (globbing)
[[ "$s" ==