Почему Bash не передает параметр errexit при подстановке команд?

«История» — это история «ранее введенных» команд.

Из руководства GNU :

«Когда опция -o history для встроенной функции set включена... оболочка предоставляет доступ к истории команд, списку ранее введенных команд».

Таким образом, он не заменяет переменные оболочки и не сохраняет итерации цикла.

Для этого вы можете использовать отладку bash, вызвав свой скрипт так:

bash -x myscript > to-my-log-file

Затем, в случае сбоя, вы можете увидеть, что произошло в файле журнала (при условии, что система успела очистить выходной буфер ).

0
12.06.2021, 02:35
1 ответ

Да, ожидается, что bash сбрасывает errexitна новых подоболочках.

Если вы хотите, чтобы errexitнаследовалось новыми подоболочками, используйте:

От человека баш:

inherit_errexit

If set, command substitution inherits the value of the errexit option, instead of unsetting it in the subshell environment. This option is enabled when posix mode is enabled.

1
28.07.2021, 11:25

Теги

Похожие вопросы