Если я запускаю следующий скрипт оболочки как обычный пользователь, он прерывается на третьей строке, как и ожидалось:
set -o errexit
echo foo > /bar
echo $?
Вот вывод:
$ sh test1.sh
test.sh: 3: test.sh: cannot create /bar: Permission denied
Однако, если команда echo является частью составного списка, выполнение продолжается после сбойной команды и печатает код выхода:
set -o errexit
{ echo foo; } > /bar
echo $?
Вот вывод:
$ sh test2.sh
test.sh: 3: test.sh: cannot create /bar: Permission denied
2
Почему сценарий не прерывается? С другой стороны, если я заменю фигурные скобки на круглые скобки, это будет работать так, как я ожидал.