Réponses:
Ctrl-Zsuspend le processus en cours d'exécution. En expression
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
toutes les commandes sauf convert(c. -à for, in, doet done) sont bashles mots - clés « en cours d' exécution dans le shell courant et la coquille ne peut pas se suspendent (et ce n'est pas votre intention de toute façon). Ainsi, lorsque vous frappez Ctrl-Zet que la commande est convertsuspendue, la boucle s'arrête simplement car il n'y a plus rien à traiter.
Si vous voulez pouvoir suspendre la boucle entière, exécutez-la simplement dans l'environnement de sous-shell:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
Le seul shell que je connaisse capable de suspendre toute la boucle dans le shell actuel est zsh.
Ctrl-Zpourrait simplement suspendre une instance de conversion, il n'y a aucune raison pour que la boucle ne puisse pas continuer et en démarrer une autre. Pour une raison quelconque bash, la boucle s'arrête. Lorsque je teste dans dashla boucle continue, d'autres shells font probablement de même.
zshest en fait capable de suspendre toute la boucle en cours d'exécution dans le shell actuel).
bashdéveloppeurs avaient probablement la même opinion que vous. Continuer la boucle est toujours ce à quoi je m'attendais cependant, lorsque vous arrêtez le processus et que vous contrôlez manuellement le shell, il semble naturel qu'il reprenne là où il bashs'était arrêté (et ce serait probablement le comportement s'il n'ajoutait pas code pour faire autre chose).
for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU bash, Version 4.2.53)