На справочной странице bash в разделе "составные команды ", есть следующие две записи:
(список) список выполняется в среде подоболочки (см. СРЕДА ВЫПОЛНЕНИЯ КОМАНД ниже). Присвоения переменных и встроенные команды, влияющие на среду оболочки, не остаются в силе после завершения команды. Статус возврата - это статус выхода из списка.
(выражение) Возвращает значение выражения. Это может быть использовано для переопределения обычного приоритета операторов.
Единственная разница, которую я вижу, заключается в том, что в одном скобки не имеют пробелов рядом с ними, а в другом они есть. Это то, что на самом деле отличает группировку от подоболочки, или это зависит от контекста?
Другими словами, если я бегу
if ! [ 2 -eq 2 ] || ( [ 2 -eq 2 ] && [ 4 -eq 4 ] ); then echo "hello"; fi
это просто группировка условий или работа в подоболочке?
&&
имеет более высокий приоритет, чем||
, поэтому скобки в этом случае на самом деле не нужны. - person Tom Fenech   schedule 25.03.2015{ list; }
— перед закрывающей фигурной скобкой требуется точка с запятой или новая строка. - person glenn jackman   schedule 25.03.2015