लूप के लिए निलंबित प्रक्रिया फिर से शुरू करें


13

मैं बैश में चल रहा हूं:

for i in ull-*.pbm; do convert $i tmp2/$i.pdf ; done

मैं Ctrl-Zदौड़ने के बीच में, और फिर fgइसकी नौकरी की आईडी। लेकिन शेष पुनरावृत्तियों को समाप्त करना जारी नहीं है। मुझे आश्चर्य है क्योंकि?


2
मैं पुष्टि कर सकता हूँ कि for i in *.txt; do echo "$i"; sleep 0.5 ; done(GNU बैश, संस्करण ४.२.५३) के लिए
२०:०२ पर हॉके लैजिंग that

जवाबों:


11

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


4
नहींं, Ctrl-Zबस एक परिवर्तित उदाहरण को निलंबित कर सकता है, कोई कारण नहीं है कि लूप जारी न रह सके और दूसरा शुरू कर सके। किसी कारण bashसे लूप बंद हो जाता है। जब मैं dashलूप में परीक्षण करता हूं , तो अन्य गोले भी संभवतः ऐसा ही करते हैं।
ग्रीम

6
@Gememe लूप जारी रखने के साथ एक पुनरावृत्ति निलंबित मेरे लिए खतरनाक लगता है क्योंकि अगला चरण पिछले पर निर्भर कर सकता है। मेरे लिए एकमात्र उचित उपाय यह है कि पूरे लूप को निलंबित कर दिया जाए और इसे सब-वे में किया जा सके (वास्तव zshमें वर्तमान शेल में चल रहे पूरे लूप को निलंबित करने में सक्षम है)।
जिमीज

3
शायद यह जवाब है - bashडेवलपर्स की संभावना आपके समान राय थी। लूप को जारी रखना अभी भी वही है जो मैंने उम्मीद की थी, हालांकि, जब आप प्रक्रिया को रोकते हैं और शेल को वापस नियंत्रित करते हैं, तो यह स्वाभाविक लगता है कि इसे कहां से छोड़ना है (और संभवत: व्यवहार में होगा bashयदि वे नहीं जोड़े गए कुछ और करने के लिए कोड)।
ग्रीम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.