मान लीजिए मेरे पास एक स्क्रिप्ट है जो एक पैरामीटर के रूप में एक पथ प्राप्त करती है। मैं उस मार्ग में स्थित सभी लिपियों को कैसे निष्पादित कर सकता हूं?
मान लीजिए मेरे पास एक स्क्रिप्ट है जो एक पैरामीटर के रूप में एक पथ प्राप्त करती है। मैं उस मार्ग में स्थित सभी लिपियों को कैसे निष्पादित कर सकता हूं?
जवाबों:
पथ द्वारा मान लेना कि आप किसी निर्देशिका के लिए पथ का उपयोग करते हैं run-parts
। से man run-parts
:
run-parts - run scripts or programs in a directory
सबसे पहले आपको उन सभी स्क्रिप्ट पर अनुमति निष्पादित करने की आवश्यकता है जिन्हें आप चलाना चाहते हैं। आम तौर पर run-parts
निर्देशिकाओं को अनदेखा करेंगे और उन फ़ाइलों को भी निष्पादित नहीं करेंगे जो उस निर्देशिका में रहते हैं।
हालांकि चलाने से पहले आपको यह जांचना चाहिए कि कौन सी फाइलें --test
विकल्प द्वारा चलाई जाएंगी :
run-parts --test /path/to/directory
मुझे उल्लेख करना चाहिए कि run-parts
स्क्रिप्ट को निष्पादित करने के लिए एक सख्त नामकरण सम्मेलन है:
If neither the --lsbsysinit option nor the --regex option is given
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
man run-parts
अधिक विचार प्राप्त करने के लिए जाँच करें ।
run-parts /home/you/Dropbox/scripts_to_run
.. हालांकि नामकरण के बारे में सावधान रहें ..
यदि आपके स्क्रिप्ट में सही नाम हैं तो रन-पार्ट्स काम करेगा। यदि आप अपनी स्क्रिप्ट का run-parts
नामकरण जटिल नामकरण योजना के अनुसार करने से संबंधित नहीं हैं, तो आप कुछ सरल कर सकते हैं
for file in ~/target/*; do $file 2>/dev/null; done
यह सभी फाइलों (और निर्देशिकाओं) को निष्पादित करने का प्रयास करेगा ~/target
। 2>/dev/null
रीडायरेक्ट त्रुटि संदेश तो यह जब निर्देशिका या गैर निष्पादन योग्य फ़ाइलों चलाने का प्रयास शिकायत नहीं होंगे।
वैकल्पिक रूप से, आप अधिक परिष्कृत प्रयास कर सकते हैं
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
यह जांच करेगा कि क्या प्रत्येक परिणाम एक फ़ाइल ( [ -f $file ]
) है, निष्पादन योग्य है ( [ -x $file ]
) और केवल अगर वे दोनों परीक्षण सफल हैं तो क्या यह फ़ाइल को निष्पादित करने का प्रयास करेगा।