В скрипте из-за цикла while read есть две проблемы:
1) Если во время запущенного скрипта ввести что-то с клавиатуры, оно не набирается (например набрать exit или любую новую команду во время работающего не получится).
2) Не передаются переменные из цикла while read в вызываемую trap'ом функцию.
Вторую проблему "обошёл", заменив while read на цикл for.
Но в скрипте есть место, где нужен именно while read из-за обработки файлов с пробелами в именах, для чего for не подходит.
Как быть?