एक मार्ग में सभी लिपियों को कैसे निष्पादित किया जाए?


13

मान लीजिए मेरे पास एक स्क्रिप्ट है जो एक पैरामीटर के रूप में एक पथ प्राप्त करती है। मैं उस मार्ग में स्थित सभी लिपियों को कैसे निष्पादित कर सकता हूं?

जवाबों:


14

पथ द्वारा मान लेना कि आप किसी निर्देशिका के लिए पथ का उपयोग करते हैं 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अधिक विचार प्राप्त करने के लिए जाँच करें ।


थोड़ा-थोड़ा पढ़ते हुए, मुझे यह पता चला: #! / Bin / bash script_to_run_dir = / home / you / Dropbox / script_to_run स्क्रिप्ट के लिए "$ script_to_run_dir" / में यदि परीक्षण -x "$ स्क्रिप्ट"; तब "$ स्क्रिप्ट" फाई किया यह मेरे लिए काम करता है, आपको क्या लगता है?
लुटारो अल्वारेज़

@LautaroAlvarez आप उस स्क्रिप्ट के साथ क्या कर रहे हैं, आसानी से एक साधारण आदेश के साथ किया जा सकता है run-parts /home/you/Dropbox/scripts_to_run.. हालांकि नामकरण के बारे में सावधान रहें ..
heemayl

भाग-दौड़ मस्त है। लेकिन यह cron.d के लिए बना है और cron.notice के रूप में syslog को लिखता है। लेकिन यह विचारों का अच्छा स्रोत है, जैसे स्किप
टेम्प

9

यदि आपके स्क्रिप्ट में सही नाम हैं तो रन-पार्ट्स काम करेगा। यदि आप अपनी स्क्रिप्ट का run-partsनामकरण जटिल नामकरण योजना के अनुसार करने से संबंधित नहीं हैं, तो आप कुछ सरल कर सकते हैं

for file in ~/target/*; do $file 2>/dev/null; done

यह सभी फाइलों (और निर्देशिकाओं) को निष्पादित करने का प्रयास करेगा ~/target2>/dev/nullरीडायरेक्ट त्रुटि संदेश तो यह जब निर्देशिका या गैर निष्पादन योग्य फ़ाइलों चलाने का प्रयास शिकायत नहीं होंगे।

वैकल्पिक रूप से, आप अधिक परिष्कृत प्रयास कर सकते हैं

for file in ~/target/*; do
    [ -f "$file" ] && [ -x "$file" ] && "$file"
done

यह जांच करेगा कि क्या प्रत्येक परिणाम एक फ़ाइल ( [ -f $file ]) है, निष्पादन योग्य है ( [ -x $file ]) और केवल अगर वे दोनों परीक्षण सफल हैं तो क्या यह फ़ाइल को निष्पादित करने का प्रयास करेगा।


यह एक परियोजना में मेरे लिए पूरी तरह से काम करता है (एक कांटा रेपो) मैं काम कर रहा हूं - github.com/rattfieldnz/Vaprobash/blob/master/setup_projects.sh
रोब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.