> Началось...
> Я вот не сильно понимаю разницу между ( ) и { }. В оснновном, с субшеллом -- без субшелла.
В не-основном - заморочки с разным "пониманием" ' ; ', ниже.
> Возможно вы знаете какие-то особенности использования { } внутри ( ) ?
> Это имели ввиду?
Я имел в виду то, что написал. В основном то, что где-что с теми проверками, я не знаю.
>
> (
> ...
> { nginx -t && service nginx reload || echo "Nginx config error!"
> } 2>&1
> ...
> )
>
> Но тогда имеем:
> test4.sh: 27: Syntax error: ")" unexpected (expecting "}")
Это я знаю, почему, но никакого отношения к первому ответу оно не имеет.
Проблема вот в чём: перед ' ) ' точка с запяной не обязательна, а перед ' } ' она нужна. Также перевод строки (примерно, как в моём первом ответе) [во всяческих скобочных многосторчных конструкциях] [и без экранирования обратным слешом] равносилен ' ; '.
Поэтому:
или
( command1 && command2 || command3 ) 2>&1
, или
( command1 && command2 || command3; ) 2>&1
, или
{ command1 && command2 || command3; } 2>&1
, или
{
command1 && command2 || command3
} 2>&1
, но не
{ command1 && command2 || command3 } 2>&1