एकल पंक्ति बैश लूप में & amp (का उपयोग करें)


58

मैं इस कमांड का सफलतापूर्वक उपयोग कर रहा हूं, जो एक कॉन्फिगर फाइल में वैरिएबल को बदलता है और फिर लूप के भीतर पायथन स्क्रिप्ट को निष्पादित करता है:

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done

जैसा कि प्रत्येक DoMyScript.pyखुद को समाप्त करने से पहले चलने में लगभग 30 सेकंड लेता है, मैं उन्हें पृष्ठभूमि पर फिर से लागू करना चाहूंगा, जबकि अगले एक को जन्म दिया जा सकता है।

मैंने कोशिश की है कि मैं नीचे के रूप में एक एम्परसेंड में जोड़कर क्या परिचित हूं:

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done

हालाँकि, यह निम्न त्रुटि का परिणाम है:

-बेश: अप्रत्याशित टोकन के पास सिंटैक्स त्रुटि `? '

जवाबों:


85

के ;बाद ड्रॉप करें &। यह एक वाक्यात्मक आवश्यकता है

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py & done

1
लानत है, 43 सेकंड बहुत धीमी :)
मार्टिन वॉन विटिच

2
@MartinvonWittich, लघुकरण के माध्यम से आपके उत्तर के लिए एक +1 ;-)
iruvar

4
हालांकि यह सवाल का जवाब देता है, यह शायद नहीं है कि ओपी चाहता है कि जब तक सभी अजगर उदाहरण शुरू हो गए हैं और शुरू में वे सभी एक numbers.txtयुक्त देखेंगे 255
स्टीफन चेज़लस

1
@StephaneChazelas के साथ सहमत हुए, लेकिन यह निश्चित नहीं है कि हम वास्तव में प्रश्न में दी गई जानकारी के साथ इसके बारे में क्या कर सकते हैं। इसका एक उचित समाधान संभवतः अधिक संदर्भ की आवश्यकता है।
बजे एक सीवीएन

3
यहाँ बैश मैनुअल संदर्भ दिया गया है: gnu.org/software/bash/manual/bashref.html#Lists
ग्लेन जैकमैन

14

1_CR के उत्तर पर स्टीफन की टिप्पणी को देखते हुए , आप शायद चाहते हैं:

for i in {114..255}; do { echo $i > numbers.txt && python DoMyScript.py; } & done

धन्यवाद ग्लेन। मैंने आपके कोड की कुछ विविधताओं की कोशिश की, जो कि बढ़ी हुई पठनीयता के कारण मुझे पसंद है, लेकिन शायद अतिरिक्त नींद की वजह से मुझे ज़रूरत थी, यह मेरे लिए काम नहीं कर रही थी। यह forसीमा में अंतिम संख्या को भी दोहराएगा ... यहां बताया गया है कि इस समय मैं किससे खुश हूं: for((i=1;i<100;i+=1)); do echo $i > numbers.txt;sleep 3; python DoMyScript.py & doneपृष्ठभूमि में निष्पादित करने के लिए प्रक्रिया प्राप्त करने का मुख्य प्रश्न बिंदु हल हो गया है।
ljs.dev

* बेशक, मैं <=मूल प्रश्न में था, इसलिए आपके द्वारा आपूर्ति की गई सीमा मेरे द्वारा आपूर्ति की गई जानकारी के आधार पर पूरी तरह से उपयुक्त थी। फिर से, अलग दृष्टिकोण के लिए धन्यवाद
ljs.dev

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.