Выбор ответа Middle Bash-скрипты обновлено
[[ ]] и [ ]
Вопрос
Чем [[ $a == prod* ]] отличается от [ $a == prod* ]?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В [[ ]] справа маска, а $a не разбивается; в [ ] маска раскроется в имена файлов. [[ ]] это ключевое слово bash: внутри нет разбиения слов и раскрытия масок по файлам, == с маской справа сравнивает по шаблону, есть = для регулярок и &&. [ ] это команда test, её аргументы готовит shell, поэтому prod может раскрыться в…
Варианты ответа
- В
[[ ]]справа маска, а$aне разбивается; в[ ]маска раскроется в имена файловправильный ответ - Ничем, это синонимы:
[[ ]]просто более новая запись той же встроенной командыtest [ ]быстрее и поддерживает регулярные выражения через=~, а[[ ]]нет[[ ]]работает только в zsh, в bash это синтаксическая ошибка при запуске
Разбор
[[ ]] это ключевое слово bash: внутри нет разбиения слов и раскрытия масок по файлам, == с маской справа сравнивает по шаблону, есть =~ для регулярок и &&. [ ] это команда test, её аргументы готовит shell, поэтому prod* может раскрыться в prod.conf, а пустая $a даст ошибку unary operator expected. Регулярки есть только в [[ ]], и это bash, а не только zsh.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.