बैश में प्रोग्रामिंग - भाग 2

भाग दो इस का मिनी ट्यूटोरियल में प्रोग्रामिंग खूब जोर से पीटना, जहां हम उपयोग करना सीखते हैं चक्र और अन्य उपकरण जो हमें अपनी कार्यक्षमता को सुधारने में मदद करेंगे लिपियों.

अगर सशर्त

If का कार्य फ़िल्टर को लागू करना है और प्रत्येक प्रकार के फ़िल्टर के लिए एक ऑपरेशन या कार्य करना है। इसकी संरचना इस प्रकार है:

अगर [हालत]; तब एलिफ कमांड [स्थिति]; फिर आज्ञा; फाई कमांड

एक उदाहरण इसके संबंधित अनुभाग में फोर्स लूप के बगल में दिखाया गया है।

चक्र

1. जबकि: यह तब तक के बीच निर्दिष्ट सभी आदेशों को निष्पादित करेगा जब तक कि स्थिति सही है। यदि हम इसकी तुलना ऑपरेटरों से करना चाहते हैं, तो अभिव्यक्ति कोष्ठक में होनी चाहिए।

जबकि काम / आदेश आदेश किया है

उदाहरण: किसी संख्या का गुणन सारणी

# /! बिन / बाश X = 1 प्रतिध्वनि "एक संख्या दर्ज करें और ENTER दबाएँ" M # पढ़ें लूप नियंत्रण जो X 10 से कम या बराबर है जबकि [$ X –le 10] do #In R हम X के गुणन को स्टोर करते हैं MR = $ [X * M] # इस गुणन को स्क्रीन पर प्रतिध्वनि "$ M * $ X = $ R" # मुद्रित किया जाता है, इसके अलावा, हम X के मान को 1 इकाई बढ़ाकर X = $ X + 1 कर देते हैं।

2. के लिए: एक चर में तत्वों की एक सूची संग्रहीत करता है, जिसका उपयोग प्रत्येक चक्र के साथ कुछ संचालन करने के लिए किया जाएगा।

तत्वों में VARIABLE के लिए कमांड किया जाता है

उदाहरण: प्रोग्राम जो एक फ़ाइल को एक फ़ोल्डर से दूसरे में कॉपी करता है, एक पुरानी फ़ाइल की जगह।

# # बिन / बाश # हम स्रोत और गंतव्य निर्देशिकाएं स्थापित करते हैं ORIGIN = / घर / उपयोगकर्ता / डाउनलोड DESTINATION = / घर / उपयोगकर्ता / दस्तावेज # हम खुद को स्रोत cd $ ORIGIN # सभी फाइलों में रखते हैं, हम चाहते हैं कि हम एक # हैं। * FILE के लिए FILE में कॉल करें ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f हमें नियमित रूप से फाइलों को फ़िल्टर करता है, क्योंकि निर्देशिकाएं हमारे लिए # सुखद हैं। -नहीं, यदि उन फ़ाइलों की तुलना में # फ़ाइल "नया" गंतव्य फ़ोल्डर में पाया जाता है यदि [-$ $ फ़ाइल] && [$ फ़ाइल-$ $ ARCH-DESTINATION]; तब प्रतिध्वनि "प्रतिलिपि $ फ़ील ..." # हम फ़ाइल की प्रतिलिपि cp cp $ FILE $ ARCH-DESTINATION Fi के साथ करते हैं, हमने # स्रोत फ़ोल्डर से बाहर निकलने के लिए cd

एक और उदाहरण: स्क्रिप्ट जहां उपयोगकर्ता को कंप्यूटर द्वारा उत्पन्न एक यादृच्छिक संख्या का अनुमान लगाना चाहिए।

# # बिन / बाश #A यादृच्छिक संख्या 1 से 10 तक उत्पन्न होती है, यह # RANDOM RANDOM = $ [$ RANDOM% 10 + 1] में बच जाती है जबकि [1] do echo –n "एक नंबर दर्ज करें:" #UM # ​​पढ़ें तुलना करें कि उपयोगकर्ता द्वारा चुनी गई संख्या RANDOM के लिए #equal है; चर का # मूल्यांकन करने के लिए $ का उपयोग करने के लिए याद रखें और उनके नाम नहीं अगर ["$ NUM –eq" $ RANDOM "]; फिर गूंज "आप सही समझे!" #ब्रेक को समाप्त करते हुए लूप को समाप्त करने की अनुमति देता है # यदि संख्या रैंडम एलिफ से कम है ["$ NUM –gt" $ रैंडम "]; फिर प्रतिध्वनि "यह कम है" "यदि नहीं, तो यह रैंडम की तुलना में अधिक प्रतिध्वनित होता है" यह अधिक से अधिक है "फाई किया

3. तक: संरचना के समान, जबकि, सिवाय इसके कि कोड हमेशा निष्पादित होता है जबकि स्थिति का मूल्यांकन नकारात्मक होता है, अर्थात, "जब तक स्थिति होती है" तब तक कार्यक्रम निष्पादित करना जारी रखता है।

जब तक CONDITION / COMMAND करना कमांड नहीं हो जाता

उदाहरण: अवरोही क्रम में संख्या 10-20 प्रिंट करें

#! / बिन / बाश CONT = 20 # जब तक काउंटर 10 से कम है (-T, "कम #than") कोड तब तक निष्पादित किया जाता है जब तक [$ CONT-10]; do echo "COUNTER $ CONT" #A CONT को एक इकाई द्वारा घटाया जाता है CONT- = 1 किया

4. चयन करें: यह अंतिम चक्र एक विशेष मामला है, क्योंकि इसका उपयोग आम तौर पर जल्दी से मेनू बनाने के लिए किया जाता है। यह For लूप के समान काम करता है।

चयनित आदेशों में सूची का चयन करें

उदाहरण: उपयोगकर्ता को स्क्रिप्ट जारी रखने या समाप्त करने की क्षमता देता है।

" कार्यक्रम को समाप्त करें, फिर ब्रेक के साथ हम चक्र से बाहर निकलें। अगर [$ आइटम = "समाप्त"]; फिर फाई ब्रेक किया
शुक्रिया जुआन कार्लोस ऑर्टिज़!

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   मध्यम कठिन कहा

    मुझे कुछ इस तरह लगता है: tar -cf - Directory | (सीडी / अन्य / निर्देशिका; टार -xvf -)

    तब यह / अन्य / निर्देशिका / निर्देशिका की तरह दिखेगा
    इस तरह मैंने एक निर्देशिका को संकुचित कर दिया है और आप इसे दूसरी जगह…

  2.   मिगुएल एंजेल कहा

    नमस्ते, अच्छा तुतो, मैं विषय के बारे में सीख रहा हूं और सब कुछ ठीक है, केवल मैं एक कार्यक्रम बनाने में सक्षम नहीं हूं जो मेरी मदद करता है, यह देखने के लिए कि क्या आप मेरी मदद कर सकते हैं।

    मुझे एक चक्र करने की आवश्यकता है, जिसमें यह एक स्रोत फ़ाइल की सूची के मापदंडों के रूप में प्राप्त करेगा, यह सूची केवल नाम (विस्तार के बिना) लाती है, ताकि चक्र निम्नलिखित करता है, निर्देशिका में प्राप्त नाम के लिए खोज करें (जो हम खोज करेंगे वह है) फ़ाइल को निकालें और कॉपी करें (पूर्ण नाम पहले से ही एक्सटेंशन के साथ) और पूर्ण पथ और इसे किसी अन्य गंतव्य फ़ाइल में बनाएं।

    अभी तक मेरे पास निम्नलिखित हैं:

    जब तक लाइन पढ़ें
    do
    इको-ई "$ लाइन"
    / home / myuser / dof "$ लाइन" खोजें -exec readlink -f {};
    किया <testlist.txt अब तक मैंने फ़ाइल को पढ़ा है, उसके पास मौजूद प्रत्येक पंक्ति, लेकिन मैं इसे उस फ़ाइल की तलाश नहीं कर सकता और जानकारी को निकाल सकता हूँ, यदि आप कृपया मेरी मदद कर सकते हैं, तो धन्यवाद। चियर्स

  3.   पामेला गैलविज़ कहा

    योगदान के लिए बहुत-बहुत धन्यवाद the

  4.   मारियो जेवियर कहा

    हाय ... मुझे आशा है कि आप अगले अभ्यास में मदद कर सकते हैं ... सभी मौजूदा निर्देशिकाओं और फ़ाइलों के लिए उपयोगकर्ता और समूह को निर्दिष्ट करने के अलावा, और फ़ाइलों और निर्देशिकाओं के लिए अनुमतियाँ निर्दिष्ट करने के अलावा निर्दिष्ट निर्देशिका में tgz में अनज़िप फ़ाइल।
    नोट: पढ़ने और लिखने के लिए तैयार फाइलें
    निर्देशिका निष्पादन की अनुमति

  5.   जुआनक कहा

    ARCH-DESTINATION एक चर है जिसमें हम गंतव्य फ़ाइल पथ को सहेजना चाहते हैं, अतिरेक के लिए सहेजते हैं। फिर, इस वेरिएबल में हम वैरिएबल DESTINATION को दर्शाते हैं, जिसमें ऊपर डॉक्यूमेंट्स फोल्डर का रास्ता है और हम "वेरिएबल" FILE को जोड़ते हैं, जिसमें फाइल का नाम होता है। यदि वह फ़ाइल थी, उदाहरण के लिए, list.doc, चर ARCH-DESTINATION /home/Usuario/Documentos/listado.doc के बराबर होगी

  6.   चलो लिनक्स का उपयोग करें कहा

    यह पिछला लेख है। आप इसे एक्सेस कर सकते हैं http://usemoslinux.blogspot.com

    झप्पी! पॉल

  7.   फ्रैंक कहा

    सुप्रभात दोस्त, बस आपका धन्यवाद, आपका ब्लॉग बहुत अच्छा है, लेकिन मैं बश में प्रोग्रामिंग का पहला भाग नहीं प्राप्त कर सकता, जहां मुझे यह धन्यवाद, बधाई

  8.   सइतो मर्दोग कहा

    दो असाधारण भागों, मेरी ईमानदारी से बधाई।

    शानदार।

  9.   Fredy कहा

    बिएन

  10.   ह्यूगो कहा

    नमस्कार, मैं एक CASE के साथ एक कार्यक्रम बना रहा हूं, जो मैं करना चाहता हूं और मैं नहीं जानता कि कैसे, उदाहरण के लिए:

    इको पिक्स एक विकल्प:
    गूंज
    इको 1. विकल्प 1
    इको 2. विकल्प 2
    इको 3. विकल्प 3
    इको 4. विकल्प 4
    गूंज 5. बाहर निकलें
    संस्करण पढ़ें
    मामले में "$ var"
    1)
    इको "आप चयनित विकल्प 1"
    ;;
    2)
    इको "आप चयनित विकल्प 2"
    ;;
    3)
    फेंक दिया "….."
    ;;
    4)
    फेंक दिया "…।"
    ;;
    5)
    फेंक दिया "…"

    ;;
    *)
    गूंज "गलत विकल्प"
    ;;
    esac

    ठीक है मुझे नहीं पता कि यह कैसे करना है जब मैं विकल्प 4 का चयन करता हूं जो बाहर निकलना है, तो पूछें कि क्या मैं वास्तव में बाहर निकलना चाहता हूं, और मुझे 2 विकल्प Y & N दें

    और दूसरा यह है कि जब आप संख्याओं के अलावा कुछ और का चयन करते हैं तो 1..5 स्क्रिप्ट से मुझे वोट नहीं देते हैं…।

    क्या आप मेरी मदद कर सकते हैं धन्यवाद

  11.   दापामा21 कहा

    नमस्ते, मैंने 1 महीने पहले स्क्रिप्टिंग शुरू की थी और आपकी स्क्रिप्ट पोस्ट के लिए धन्यवाद। मैंने लगभग 15-20 किया होगा। पहले से ही बहुत - बहुत धन्यवाद। लेकिन अब हमारे शिक्षक ने हमें नौकरी दे दी है जिससे मैं स्थिर हो गया हूं। चूंकि शिक्षक पूछता है:
    एक निर्देशिका पारित करना, अपने घर की उन सभी फ़ाइलों की प्रतिलिपि बनाएँ जो उस निर्देशिका में वर्णानुक्रम में हैं और उनका नामकरण फ़ाइल 1 file2 आदि ... आदि।
    अब मैं ढूंढने या खोजने के क्षण में हूं, मैं खोज का उपयोग करना चाहता था, लेकिन जब मैंने इसे त्रुटि कोड के रूप में दे दिया, तो मैंने देव नल के माध्यम से डाल दिया, अनुमति से इनकार कर दिया तो मैं गलत हो गया और यह पता लगाने के लिए कि मैं यहां हूं:
    पता लगाएं $ 1 | grep "/ $ {1} \"
    लेकिन इस के साथ वे सब बाहर आ जाओ ...
    अगर आप इसे पढ़ते हैं तो बहुत धन्यवाद।
    अगर आप मेरी मदद कर सकते हैं तो यह एक बड़ी मेहरबानी होगी।

  12.   लुइस कहा

    मैं चाहूंगा कि आप इसमें मेरी मदद करें।
    1. कीबोर्ड पर एक पूरी संख्या दर्ज करें और दो बार प्रदर्शित करें और स्क्रीन पर उस संख्या को तीन गुना करें। 2.- यह तय करने के लिए एक कार्यक्रम बनाएं कि क्या कीबोर्ड द्वारा दर्ज किया गया नंबर 3 से विभाज्य है या नहीं।
    3.- का योग ज्ञात करने के लिए एक कार्यक्रम बनाएं: ???????? + ?????????????????????? ???????
    4.- 1 + 3 + 5 + 7 + 9 · · · + (2n + 1) का योग खोजने के लिए एक कार्यक्रम बनाएं।
    5. एक प्रोग्राम बनाएं जो लिनक्स शब्द को स्क्रीन पर 10 बार प्रिंट करता है
    6.-एक प्रोग्राम बनाएं जो स्क्रीन पर लिनक्स शब्द को एक उपयोगकर्ता द्वारा इंगित किए गए समय की संख्या को प्रिंट करता है।
    7. घंटे में एक राशि दर्ज करें और उन्हें मिनट और सेकंड में परिवर्तित करें।
    8. एक त्रिकोण के क्षेत्र की गणना करें
    9. कीबोर्ड पर एक नंबर दर्ज करें, फिर यदि आप 2 दर्ज करते हैं तो इसे चुकता किया जाना चाहिए, 3 घन, 4 से चौथे और इतने पर 6 तक।
    10-उस पेंशन की गणना करें जिसे एक छात्र को भुगतान करना होगा, विशेषता कोड दर्ज किया जाना चाहिए, और बकाया दिनों में:
    कोड
    स्पेशलिटी
    रकम
    प्रति दिन घट रहा है
    1
    कम्प्यूटिंग
    160
    1
    2
    नर्सिंग
    150
    1.5
    3
    SECRETARIAT
    140
    2
    4
    पर्यटन
    180
    2.5
    5
    लेखांकन
    160
    1
    आपको अपनी पढ़ाई की विशेषता, पेंशन की लागत, डिफ़ॉल्ट और भुगतान की जाने वाली कुल राशि को दिखाना होगा।

  13.   चार्ली कहा

    हैलो, क्या कोई मेरी मदद कर सकता है?
    मुझे कीबोर्ड से तीन शब्दों का अनुरोध करना है और उन्हें A से z तक वर्णमाला के क्रम में दिखाना है »
    LINUX porfaborrrr के लिए बैश या श भाषा में