Это устанавливает ловушку ERR
:
trap 'printf "Error for %s, halted, continue with fg\n" "$cmd"; kill -s STOP $$; continue' ERR
while IFS= read -r cmd; do
command $cmd
done <input
Ловушка срабатывает при любой ошибке, которая обычно приводит к сбой при запуске под set -e
. Ловушка напечатает информационное сообщение, а затем временно остановит процесс.
Когда пользователь возобновляет его с помощью fg
, оператор continue
в ловушке гарантирует, что следующая строка ввода будет прочитана.
Пока сценарий приостановлен, можно редактировать входной файл. Сценарий продолжит чтение со следующей строки ввода после строки, содержащей неудачную команду.