जवाबों:
Ctrl-Zवर्तमान में चल रही प्रक्रिया को निलंबित करता है। अभिव्यक्ति में
for i in ull-*.pbm; do convert "$i" "tmp2/$i.pdf" ; done
को छोड़कर सभी आदेशों convert(यानी for, in, doऔर done) कर रहे हैं bashवर्तमान खोल में चल रहा है खोजशब्दों और खोल ही निलंबित नहीं कर सकता है (और यह आपका इरादा किसी भी तरह नहीं है)। इसलिए जब आप हिट करते हैं 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 बैश, संस्करण ४.२.५३) के लिए