Jawaban:
Ctrl-Zmenunda proses yang sedang berjalan. Dalam ekspresi
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
semua perintah kecuali convert(mis for. in, dodan done) adalah bashkata kunci yang berjalan di shell saat ini dan shell tidak dapat menangguhkan dirinya sendiri (dan bagaimanapun juga bukan maksud Anda). Jadi ketika Anda menekan Ctrl-Z, dan perintah convertditangguhkan, loop hanya akan berhenti karena tidak ada yang diproses lagi.
Jika Anda ingin dapat menangguhkan seluruh loop maka jalankan saja di lingkungan subkulit:
(for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done)
Satu-satunya shell yang saya tahu yang mampu menangguhkan seluruh loop di shell saat ini adalah zsh.
Ctrl-Zhanya dapat menangguhkan instance satu konversi, tidak ada alasan mengapa loop tidak dapat melanjutkan dan memulai yang lain. Untuk beberapa alasan bashmenghentikan loop. Ketika saya menguji dalam dashloop terus, kerang lain mungkin melakukan hal yang sama.
zshdapat menunda seluruh loop berjalan di shell saat ini).
bashpengembang kemungkinan memiliki pendapat yang sama dengan Anda. Melanjutkan pengulangan masih seperti yang saya perkirakan, ketika Anda menghentikan proses dan mengembalikan kontrol ke shell, tampaknya wajar jika ia mengambil dari tempatnya (dan mungkin akan menjadi perilaku bashjika mereka tidak menambahkan kode untuk melakukan sesuatu yang lain).
for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU bash, Versi 4.2.53)