Когда квадратные скобки требуются в операторе 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
предоставляет [
как встроенная оболочка.
в любом случае, чтобы ответить на ваш вопрос: что if
does запускает команду, которую вы ему даете, и видит, что возвращаемое значение 0
или нет. Вы используете [
сделать другие, более интересные сравнения как сравнения строк. См.man [
и man bash
.