Ответы:
Ctrl-Zприостанавливает текущий запущенный процесс. В выражении
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
все команды , кроме convert(то есть for, in, doи done) являются bash«s ключевыми словами , работающими в текущей оболочке и оболочка не может приостановить себя (и это не ваши намерения , так или иначе). Поэтому, когда вы нажимаете Ctrl-Zи команда convertприостанавливается, цикл просто завершается, так как больше нечего обрабатывать.
Если вы хотите приостановить весь цикл, просто запустите его в среде subshell:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
Единственная известная мне оболочка, которая способна приостановить весь цикл в текущей оболочке, это zsh.
Ctrl-Zможет просто приостановить один экземпляр преобразования, нет никаких причин, почему цикл не может продолжить и запустить другой. По какой-то причине bashостанавливает цикл. Когда тестирование в dashцикле продолжается, другие оболочки, вероятно, делают то же самое.
zshон может приостановить весь цикл, работающий в текущей оболочке).
bashразработчики, вероятно, были того же мнения, что и вы. Продолжение цикла - все еще то, что я ожидал, хотя, когда вы останавливаете процесс и передаете управление обратно в оболочку, кажется естественным для него выбрать, где он остановился (и, вероятно, это будет поведение, bashесли они не добавят код, чтобы сделать что-то еще).
for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU bash, Версия 4.2.53)