«История» — это история «ранее введенных» команд.
«Когда опция -o history для встроенной функции set включена... оболочка предоставляет доступ к истории команд, списку ранее введенных команд».
Таким образом, он не заменяет переменные оболочки и не сохраняет итерации цикла.
Для этого вы можете использовать отладку bash, вызвав свой скрипт так:
bash -x myscript > to-my-log-file
Затем, в случае сбоя, вы можете увидеть, что произошло в файле журнала (при условии, что система успела очистить выходной буфер ).
Да, ожидается, что 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.