3

Мне нужны фигурные скобки, чтобы указать приоритет оценки выражений, но я не хочу, чтобы фигурные скобки создавали подскрипты. Посмотрите, что происходит, когда запускается этот пример кода:

Пример скрипта

#!/bin/bash

false || (echo "First" && exit 1)
false || (echo "Second" && exit 2)
exit 3

Выход

First
Second

Кажется, что фигурные скобки создают подпрограммы, где выход не вызывает основной сценарий для выхода.

Какой самый элегантный способ сделать то, что я хочу? Желательно без блоков и вложенности. Спасибо!

1 ответ1

6

Это () скобки, и они запускают подоболочку

Это {} фигурные скобки, и они предназначены для группировки в текущей оболочке. exit будет выход из вашего сценария.

Обратите внимание, что требования к пробелам являются более строгими ({ после пробела должен следовать пробел; } должна предшествовать точка с запятой плюс пробел или символ новой строки)

false || { echo foo; echo bar; }     # this is OK
false || {echo foo; echo bar}        # not OK

См. Группирование команд в руководстве для деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .