लगातार आदेश


14

क्या मैं यह मानने के लिए सही हूं कि जब ;एक पंक्ति में दो कमांड जुड़ते हैं, तो बैश हमेशा इंतजार करता है जब तक कि पहली कमांड दूसरी कमांड को निष्पादित करने से पहले बाहर निकल गई हो? और इसी तरह, शेल स्क्रिप्ट में अलग-अलग लाइनों पर दो अलग-अलग कमांड होते हैं, बैश हमेशा तब तक इंतजार करता है जब तक कि दूसरी लाइन पर कमांड को निष्पादित करने से पहले पहली पंक्ति पर कमांड बाहर नहीं निकल जाती है?

यदि यह मामला है, तो क्या एक लाइन में या स्क्रिप्ट में दो कमांड निष्पादित करने का एक तरीका है, ताकि दूसरी कमांड तब तक इंतजार न करे जब तक कि पहली कमांड समाप्त न हो जाए?

इसके अलावा, शेल स्क्रिप्ट में अलग-अलग रेखाएं अलग-अलग लाइनों के बराबर होती हैं, जो इसमें शामिल होती हैं ;या &&?


1
आपको इस बात में दिलचस्पी हो सकती है कि शेल के नियंत्रण और पुनर्निर्देशन ऑपरेटर क्या हैं?
terdon

जवाबों:


26

आप सही हैं, स्क्रिप्ट में आदेशों को क्रमिक रूप से डिफ़ॉल्ट रूप से निष्पादित किया जाता है।

आप इसे &(एक एम्परसेंड) के साथ प्रत्यय लगाकर पृष्ठभूमि में एक कमांड चला सकते हैं ।

अलग-अलग लाइनों पर कमांड ;डिफ़ॉल्ट रूप से शामिल होने वाले कमांड के बराबर हैं । यदि आप अपने शेल को गैर-शून्य निकास कोड ( set -e) पर निरस्त करने के लिए कहते हैं , तो स्क्रिप्ट निष्पादित करेगी जैसे कि सभी आदेशों के साथ जुड़ गए थे &&


2

अपने दूसरे प्रश्न का उत्तर देने के लिए, आप &पृष्ठभूमि में एक कमांड लॉन्च करने के लिए उपयोग कर सकते हैं और स्क्रिप्ट के साथ इसे खत्म होने तक इंतजार किए बिना जारी रख सकते हैं।

commandA & commandB

यदि आप इसे एक इंटरैक्टिव टर्मिनल (स्क्रिप्ट के बजाय) पर चलाते हैं, तो आप fgबैकग्राउंडेड कमांड को फ़ोकस में वापस लाने के लिए, या jobsबैकग्राउंड कार्यों की सूची देखने के लिए उपयोग कर सकते हैं ।

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