Когда квадратные скобки требуются в инструкции Bash if?
обычно я использую квадратные скобки в выражении if:
if [ "$name" = 'Bob' ]; then ...
но, когда я проверяю, если grep удалось я не использую квадратные скобки:
if grep -q "$text" $file ; then ...
когда квадратные скобки необходимы в if заявление?
3 ответа:
квадратные скобки являются синонимом . Ан
ifоператор проверяет состояние выхода команды, чтобы решить, какую ветвь принять.grep -q "$text"команда, но"$name" = 'Bob'не--это просто выражение.test- это команда, которая принимает выражение и вычисляет его:if test "$name" = 'Bob'; then ...так как квадратные скобки являются синонимом
testкоманда, затем вы можете переписать его в качестве исходного утверждения:if [ "$name" = 'Bob' ]; then ...
лучший способ думать о
[ ... ]синтаксис, чтобы рассмотреть[программа - что это такое!зацени вот это:
~ $ ls /usr/bin/\[ /usr/bin/[С другой стороны, вы, вероятно, не используете эту версию с
bashпредоставляет[как встроенная оболочка.в любом случае, чтобы ответить на ваш вопрос: что
ifdoes запускает команду, которую вы ему даете, и видит, что возвращаемое значение0или нет. Вы используете[делать другое, более интересное сравнения, такие как сравнение строк. Смотритеman [иman bash.