Respostas:
Ctrl-Zsuspende o processo atualmente em execução. Em expressão
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
todos os comandos exceto convert(ou seja for, in, doe done) são bash's palavras-chave que funcionam no shell atual e shell não pode suspender-se (e não é a sua intenção de qualquer maneira). Portanto, quando você pressiona Ctrl-Ze o comando é convertsuspenso, o loop simplesmente sai, pois não há mais o que processar.
Se você deseja suspender o loop inteiro, basta executá-lo no ambiente do subshell:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
O único shell que conheço que é capaz de suspender todo o loop no shell atual é zsh.
Ctrl-Zpode simplesmente suspender a instância de conversão, não há razão para que o loop não possa continuar e iniciar outra. Por algum motivo, bashinterrompe o loop. Quando eu testo no dashloop, outras conchas provavelmente fazem o mesmo.
zshshell (na verdade, é capaz de suspender o loop inteiro em execução no shell atual).
bashdesenvolvedores provavelmente tiveram a mesma opinião que você. Porém, continuar o loop ainda é o que eu esperava, quando você interrompe o processo e devolve o controle ao shell, parece natural que ele continue de onde parou (e provavelmente seria o comportamento bashse eles não adicionassem código para fazer outra coisa).
for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU bash, versão 4.2.53)