मैं इसे किसी अन्य भाषा में कर सकता था, लेकिन बैश के साथ मैंने दूर और चौड़ा देखा और जवाब नहीं मिला।मैन्युअल रूप से फ़ाइल की एक पंक्ति को पुन: सक्रिय करना | bash
मुझे स्क्रिप्ट में $line
मैन्युअल रूप से बढ़ाने की आवश्यकता है। उदाहरण:
for line in `cat file`
do
foo()
foo_loop(condition)
{
do_something_to_line($line)
}
done
अगर आप देखते हैं, हर बार foo_loop
दोहराता, $line
ही रहता है। मुझे वहां $line
फिर से चालू करने की आवश्यकता है, और सुनिश्चित करें कि लूप के लिए मूल केवल फ़ाइल में लाइनों की संख्या चलाता है।
मैंने एक अलग लूप का उपयोग करके फ़ाइल में लाइनों की संख्या और foo()
के आंतरिक लूप के अंदर लाइन वैरिएबल को फिर से चलाने के बारे में सोचा है।
कोई विचार?
संपादित करें:
इतना अस्पष्ट होने के लिए क्षमा करें।
ये हम चले:
मैं अपने कोड का एक खंड बनाने के लिए कोशिश कर रहा हूँ
Function foo() # Does something
for line in `cat $temp_file`;
foo($line)
कि कोड सिर्फ ठीक काम करता है कई बार (समानांतर निष्पादन) पर अमल, क्योंकि foo
बस में ले जा रहा है रेखा का मूल्य; लेकिन अगर मैं ऐसा करने के लिए चाहता था:
Function foo() # Does something
for line in `cat $temp_file`;
while (some condition)
foo($line)
end
$line
जबकि पाश भर एक ही मूल्य के बराबर होगा। मुझे इसे while
लूप के साथ बदलने की आवश्यकता है, फिर यह for
पर वापस जाने पर जारी रखें। उदाहरण:
line = Hi
foo{ echo "$line" };
for line in `cat file`;
while (number_of_processes_running -lt max_number_allowed)
foo($line)
end
तो फ़ाइल की सामग्री थे
Hi \n Bye \n Yellow \n Green \n
उदाहरण कार्यक्रम का उत्पादन किया जाएगा (यदि अधिकतम संख्या की अनुमति दी थी 3)
Hi Hi Hi Bye Bye Bye Yellow Yellow Yellow Green Green Green.
मैं इसे कहाँ करना चाहते हैं
Hi Bye Yellow Green
मुझे उम्मीद है यह बेहतर है। मैं अपनी समस्या को समझाने के लिए अपनी पूरी कोशिश कर रहा हूं।
मुझे लगता है कि आप जो हासिल करने की कोशिश कर रहे हैं उसके बारे में हमें एक स्पष्ट उदाहरण की आवश्यकता है। foo() एक लूप के भीतर एक खोल फ़ंक्शन को परिभाषित करने के लिए प्रतीत होता है, जो मुझे यकीन नहीं है कि आप क्या चाहते हैं। –