काम पर, मैं बार-बार स्क्रिप्ट लिखता हूं। मेरे पर्यवेक्षक ने सुझाव दिया है कि संपूर्ण स्क्रिप्ट को निम्नलिखित उदाहरणों के समान कार्यों में विभाजित किया जा सकता है:
#!/bin/bash
# Configure variables
declare_variables() {
noun=geese
count=three
}
# Announce something
i_am_foo() {
echo "I am foo"
sleep 0.5
echo "hear me roar!"
}
# Tell a joke
walk_into_bar() {
echo "So these ${count} ${noun} walk into a bar..."
}
# Emulate a pendulum clock for a bit
do_baz() {
for i in {1..6}; do
expr $i % 2 >/dev/null && echo "tick" || echo "tock"
sleep 1
done
}
# Establish run order
main() {
declare_variables
i_am_foo
walk_into_bar
do_baz
}
main
क्या "पठनीयता" के अलावा ऐसा करने का कोई कारण है, जो मुझे लगता है कि कुछ और टिप्पणियों और कुछ लाइन रिक्ति के साथ समान रूप से स्थापित किया जा सकता है?
क्या यह स्क्रिप्ट को अधिक कुशलता से चलाता है (मैं वास्तव में विपरीत, अगर कुछ भी) की उम्मीद करूंगा, या क्या यह उपरोक्त पठनीयता क्षमता से परे कोड को संशोधित करना आसान बनाता है? या यह वास्तव में सिर्फ एक शैलीगत पसंद है?
कृपया ध्यान दें कि यद्यपि स्क्रिप्ट इसे अच्छी तरह से प्रदर्शित नहीं करती है, लेकिन हमारी वास्तविक लिपियों में कार्यों का "रन ऑर्डर" बहुत रैखिक होता है - walk_into_bar
यह उस सामान पर निर्भर करता है जो i_am_foo
उसने किया है, और इसके do_baz
द्वारा निर्धारित सामान पर कार्य करता है walk_into_bar
- इसलिए किया जा रहा है मनमाने ढंग से रन ऑर्डर स्वैप करने में सक्षम कुछ ऐसा नहीं है जो हम आम तौर पर कर रहे हैं। उदाहरण के लिए, यदि आप अचानक डाल करने के लिए नहीं चाहते हैं declare_variables
के बाद walk_into_bar
, कि चीजें टूट जाएगा।
उपरोक्त लिपि मैं कैसे लिखूंगा इसका एक उदाहरण है:
#!/bin/bash
# Configure variables
noun=geese
count=three
# Announce something
echo "I am foo"
sleep 0.5
echo "hear me roar!"
# Tell a joke
echo "So these ${count} ${noun} walk into a bar..."
# Emulate a pendulum clock for a bit
for i in {1..6}; do
expr $i % 2 >/dev/null && echo "tick" || echo "tock"
sleep 1
done
local
- यह वैरिएबल स्कोप प्रदान करता है जो कि किसी भी गैर-तुच्छ लिपि में अविश्वसनीय रूप से महत्वपूर्ण है।
main()
सबसे ऊपर रखता हूं औरmain "$@"
इसे कॉल करने के लिए सबसे नीचे जोड़ता हूं । जब आप इसे खोलते हैं तो आपको पहली बार उच्च स्तरीय स्क्रिप्ट तर्क दिखाई देता है।