Когда квадратные скобки требуются в инструкции 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
.