Відповіді:
Ctrl-Zпризупиняє поточний процес. У виразі
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
всі команди , крім convert(тобто for, in, doі done) є bash«s ключовими словами , що працюють в поточній оболонці і оболонка не може призупинити себе (і це не ваші наміри , так чи інакше). Тож коли ви натиснете Ctrl-Z, і команда convertпризупиниться, цикл просто вийде, оскільки більше нічого обробляти.
Якщо ви хочете призупинити весь цикл, просто запустіть його в середовищі додаткової оболонки:
(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)