बशर कसे लिहायचे ते व्हाईट-लूप्स

आदेश, वाक्यरचना, आणि उदाहरणे

आपण आदेशांची क्रमाने स्क्रिप्ट फाइलमध्ये लिहून ती कार्यान्वित करू शकता.

एक स्क्रिप्ट फाइल ही एक मजकूर फाइल असते, सहसा. SH फाइल एक्सटेंशन सह, ज्यात निर्देशांची क्रम असते ज्यांची आज्ञावली ( शेल ) मधून कार्यान्वित केली जाऊ शकते.

वळण उदाहरणे असताना

खाली लूपचे उदाहरण आहे. कार्यान्वित झाल्यावर, ही स्क्रिप्ट फाइल स्क्रीनवर 1 ते 9 संख्या मुद्रित करेल. While -statement आपल्याला for-loop पेक्षा टर्मिनेशन कंडीशन निर्दिष्ट करण्यासाठी अधिक लवचिकता देते.

#! / बिन / बॅश गणना = 1 तर [$ count -le 9] "$ count" स्लीप 1 ("+ count ++") एको करा.

उदाहरणार्थ, आपण मागील स्क्रिप्टला अनियमित लूप बनवू शकता ज्यामुळे "((count ++)) वाढीव स्टेटमेंट वगळून":

#! / बिन / बॅश गणना = 1 तर [$ count -le 9] असे करा "$ count" स्लीप 1 एको करा

"Sleep 1" स्टेटमेंट प्रत्येक पुनरावृत्तीनंतर 1 सेकंदापर्यंत एक्जीक्यूशनला विराम देतो. प्रक्रिया बंद करण्यासाठी Ctrl + C कीबोर्ड शॉर्टकट वापरा.

आपण अट म्हणून कोलन म्हणून एक असीम लूप तयार करू शकता:

#! / बिन / बॅश गणना = 1: जेव्हा "$ count" स्लीप 1 ("+ count ++") केले असेल तर

While-loop मध्ये एकाधिक स्थिती वापरण्यासाठी, आपल्याला दुहेरी चौकटी कंस असे नोटेशन वापरावे लागेल:

गणना = 1 पूर्ण = 0 [[$ count -le 9] आणि& [$ पूर्ण केले == 0]] "$ count" झोप 1 "((count ++)) प्रतिध्वनी करत असल्यास [$ count == 5]; नंतर $ पूर्ण झाले = 1 पूर्ण झाले

या स्क्रीप्टमध्ये, "पूर्ण" व्हेरिएबल 0 मध्ये सुरु केले आणि नंतर 1 वर मोजल्यावर 1 वर सेट केले. लूप अट दर्शवते की "संख्या" 9 पेक्षा कमी आहे आणि "पूर्ण" समान आहे शून्यावर तेव्हा count 5 equals झाल्यावर loops बाहेर पडतात.

"&&" म्हणजे तार्किक "आणि" आणि "||" तार्किक म्हणजे "किंवा".

"आणि" आणि "किंवा" परिस्थितीमध्ये "-ए" आणि "-o" एक चौकोन कंस सह एक पर्यायी संकेताक्षर आहे. वरील अटी:

[[$ count -le 9] && [$ पूर्ण केले == 0]]

... म्हणून पुनर्लेखन केले जाऊ शकते:

[$ count -le 9] -a [$ done == 0]

मजकूर फाइल वाचणे सामान्यत: while लूपसह केले जाते. खालील उदाहरणामध्ये, बाश स्क्रिप्ट "inventory.txt:" नावाच्या एका फाईलच्या ओळीवर सामुग्री रेष वाचते.

FILE = inventory.txt exec 6

पहिली ओळ "FILE" व्हेरिएबलला इनपुट फाईल नेम लागू करते. दुसरी ओळ फाइल डिस्क्रिप्टर "6" (हे 3 आणि 9 दरम्यानचे कोणतेही मूल्य असू शकते) मध्ये "स्टँडर्ड इनपुट" वाचवते. हे केले जाते जेणेकरून "मानक इनपुट" स्क्रिप्टच्या शेवटी "0" फाइलवर पुनर्संचयित केले जाऊ शकते ("नियामक" हे 3 रे लिस्टमध्ये "0," वापरले जात आहे. स्टँडर्ड इंपुट साठी. "read" स्टेटमेंट नंतर प्रत्येक पुनरावृत्ती वर फाइल पासून एक ओळी वाचते आणि त्यास "line1" व्हेरिएबलवर वाटप करते.

अकाली-लूपमधून वेळेच्या बाहेर जाण्यासाठी आपण यासारख्या खंडांचे विपत्र वापरू शकता:

गणना = 1 पूर्ण = 0 तर [$ count -le 9] ने "$ count" स्लीप 1 ((गणना ++)) प्रतिध्वनी केली तर [$ count == 5] नंतर पूर्ण आक्षेप

ब्रेक विधान शेवटी लूपचा शेवट करण्यासाठी कार्यक्रम अंमलबजावणी वगळतो आणि खालील कोणत्याही विधाना कार्यान्वीत करते. या प्रकरणात, स्टेटमेंट "इको समाप्त."

दुसरीकडे, सुरू असलेल्या वक्तव्यात, सध्याच्या पुनरावृत्तीच्या बाकीचे लूप स्टेटमेंट वगळते आणि पुढील पुनरावलोकनास थेट जोडते:

गणना = 1 पूर्ण = 0 तर [$ count -le 9] झोप 1 ((गणना ++)) जर [$ count == 5] असेल तर "$ count" echo करा पुढे पूर्ण केले

या प्रकरणात, "continue" स्टेटमेंट कार्यान्वित केले जाते, जेव्हा "count" हे व्हेरिएबल 5 वर पोहोचते. याचा अर्थ पुढील पुनरावृत्ती (प्रतिध्वनी "$ count") या पुनरावृत्तीवर कार्यान्वित होत नाही (जेव्हा "गणना" 5 ची किंमत आहे).