Jawaban:
Ctrl-Z
menunda 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
, do
dan done
) adalah bash
kata 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 convert
ditangguhkan, 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-Z
hanya dapat menangguhkan instance satu konversi, tidak ada alasan mengapa loop tidak dapat melanjutkan dan memulai yang lain. Untuk beberapa alasan bash
menghentikan loop. Ketika saya menguji dalam dash
loop terus, kerang lain mungkin melakukan hal yang sama.
zsh
dapat menunda seluruh loop berjalan di shell saat ini).
bash
pengembang 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 bash
jika 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)