अद्यतन:क्या एक शेल स्क्रिप्ट इंगित कर सकती है कि इसकी लाइनों को शुरुआत में स्मृति में लोड किया जा सकता है?
- मैं एक त्वरित और गंदा काम
- के लिए एक खोल स्क्रिप्ट (बैश) लिखें: इस How to make shell scripts robust to source being changed as they run
यह एक छोटे से बात यह है कि मुझे हर अब और फिर परेशान है की एक पोस्ट है मैं स्क्रिप्ट चलाने, और यह काफी देर
- हालांकि यह चल रहा है, मैं, स्क्रिप्ट की कुछ पंक्तियों में संपादित एक अलग काम
- लेकिन पहले की प्रक्रिया के लिए यह विन्यस्त करने अब भी वही स्क्रिप्ट फ़ाइल पढ़ रही है और हो जाता है के लिए चलाता है सब बँधा हुआ।
जाहिर है, स्क्रिप्ट फ़ाइल के रूप में यह की जरूरत है से प्रत्येक पंक्ति लोड करके व्याख्या की है। क्या कोई तरीका है कि मैं स्क्रिप्ट को खोल को इंगित कर सकता हूं कि पूरी स्क्रिप्ट फ़ाइल को स्मृति में एक बार में पढ़ा जाना चाहिए? उदाहरण के लिए, पर्ल स्क्रिप्ट्स ऐसा करने लगते हैं: कोड फ़ाइल को संपादित करने से ऐसी प्रक्रिया प्रभावित नहीं होती है जो वर्तमान में इसे व्याख्या कर रही है (क्योंकि इसे प्रारंभ में पार्स/संकलित किया गया है?)।
मैं समझता हूं कि इस समस्या के आसपास कई तरीके हैं I उदाहरण के लिए, मैं की तरह कुछ की कोशिश कर सकते:
cat script.sh | sh
या
sh -c "`cat script.sh`"
... हालांकि उन सही ढंग से काम नहीं कर सकते, तो स्क्रिप्ट फ़ाइल बड़ी है और वहाँ धारा बफर के आकार पर सीमा नहीं है और कमांड लाइन तर्क। मैं एक सहायक रैपर भी लिख सकता हूं जो एक स्क्रिप्ट फ़ाइल को लॉक अस्थायी फ़ाइल में कॉपी करता है और फिर इसे निष्पादित करता है, लेकिन यह बहुत पोर्टेबल प्रतीत नहीं होता है।
तो मैं सबसे सरल समाधान की उम्मीद कर रहा था जिसमें केवल स्क्रिप्ट के लिए संशोधन शामिल होंगे, जिस तरह से इसे लागू किया जाता है। क्या मैं स्क्रिप्ट की शुरुआत में बस एक या दो पंक्ति जोड़ सकता हूं? मुझे नहीं पता कि ऐसा समाधान मौजूद है या नहीं, लेकिन मुझे लगता है कि यह $ 0 चर का उपयोग कर सकता है ...
यह http://stackoverflow.com/questions/2285403/how-to-make-shell-scripts-robust-to-source-being-changed-as-they-run – camh
का डुप्लिकेट धन्यवाद, कैम! यह पूर्ण है। – Anonymous
संपादन से बचने के लिए, आप चलते समय स्क्रिप्ट हटा सकते हैं। (यह शायद [ephemient] (http://stackoverflow.com/users/20713/ephemient) और [रयान थॉम्पसन] (http://stackoverflow.com/users/125921/ryan-thompson) का मतलब है।) देखें [ इस पोस्ट] (http://stackoverflow.com/questions/8335747/emacs-workflow-to-edit-bash-scripts-while-they-run) कारण और इसे स्वचालित करने के लिए। –