लिनक्स में अपनी शेल स्क्रिप्ट लिखते समय ध्यान रखने योग्य कुछ आसान टिप्स यहां दी गई हैं।
शैल स्क्रिप्ट Linux (और MacOS, और अब Windows, Linux के लिए Windows सबसिस्टम के साथ) में आपके वर्कफ़्लो को स्वचालित करने का एक बहुमुखी तरीका है। शेल स्क्रिप्टिंग सिंटैक्स और व्यवहार की अपनी ख़ासियतें हैं, और ऐसे उपयोगी शॉर्टकट हैं जिनका उपयोग आप अपनी स्क्रिप्ट को सरल बनाने के लिए भी कर सकते हैं।
बैश स्क्रिप्टिंग टिप्स
ये युक्तियां इंटरनेट से एकत्र की गई हैं, जिनमें से कुछ मेरे द्वारा ही दी गई हैं।
त्रुटि होने पर भी बैश स्क्रिप्ट चलती रहेंगी!
यह समस्या पैदा कर सकता है, खासकर अगर उपयोगकर्ता इनपुट स्वीकार करना और फाइलों के साथ काम करना। इस व्यवहार को रोकने के लिए सेट कमांड जोड़ें
set -eu
…आपकी स्क्रिप्ट के आरंभ में। -ई त्रुटि होने पर स्क्रिप्ट को बाहर निकलने के लिए कहता है, और –u यदि कोई चर सेट नहीं है तो स्क्रिप्ट को बाहर निकलने के लिए कहता है।
हमेशा शेबैंग शामिल करें
शेबैंग को हमेशा अपनी स्क्रिप्ट की पहली पंक्ति के रूप में शामिल करें:
#!/bin/sh
यह सिस्टम को बताता है कि स्क्रिप्ट की व्याख्या के लिए किस शेल का उपयोग किया जाना चाहिए, और संगतता के लिए महत्वपूर्ण है। बैश के लिए लिखी गई एक स्क्रिप्ट Zsh के भीतर चलने पर अलग तरह से व्यवहार कर सकती है, लेकिन शेबैंग को शामिल करके, आप यह सुनिश्चित कर सकते हैं कि इसकी सही शेल के साथ व्याख्या की गई है।
कभी उपयोगकर्ता नहीं sudo आपकी स्क्रिप्ट में
यदि आप कोई स्क्रिप्ट चलाते हैं तो यह अस्पष्टता का कारण बनता है, और पाइप और पुनर्निर्देशन का उपयोग करते समय समस्याएं पैदा कर सकता है। यह भी एक सुरक्षा समस्या है। यदि किसी स्क्रिप्ट को रूट अनुमतियों की आवश्यकता है, तो पूरी स्क्रिप्ट को रूट के रूप में या sudo . का उपयोग करके चलाया जाना चाहिए ।
जांचें कि क्या स्क्रिप्ट को किसी स्क्रिप्ट में रूट/सुडो के रूप में चलाया जा रहा है
इस कमांड को अपनी स्क्रिप्ट की शुरुआत में जोड़ें ताकि यह जांचा जा सके कि यह रूट/सुडो विशेषाधिकारों के साथ चल रहा है। यह कमांड आपकी स्क्रिप्ट को कुछ भी करने की कोशिश करने से पहले विफल कर देगा, बजाय इसके कि जब आप किसी कमांड को चलाने की कोशिश करें जिसके लिए रूट विशेषाधिकारों की आवश्यकता हो
# Check if running as root if ((EUID!=0 )); then printf "Please run as root" exit 1 fi
उपयुक्त संकेतों को छोड़ें -y . के साथ
-y जोड़ें अपने उपयुक्त कमांड के अंत तक प्रॉम्प्ट को छोड़ दें और अपनी स्क्रिप्ट को बिना यूजर इनपुट के चलने दें:
sudo apt install nano -y
या
sudo apt upgrade -y
अपने रास्तों को कोट करें!!!
बैश स्क्रिप्ट लिखते समय अपने पथ का उद्धरण दें। यह काफी महत्वपूर्ण है कि हमारे पास एक संपूर्ण लेख है जिसमें बताया गया है कि ऐसा क्यों है।
और वर्तमान कार्यशील निर्देशिका के लिए सही
CURR_DIR="$(dirname $0);" printf -- 'moving application to /opt/app.jar'; mv "${CURR_DIR}/application.jar" /opt/app.jar;
उपयोगकर्ता इनपुट से चर के लिए डिफ़ॉल्ट मान सेट करें
उपयोगकर्ता इनपुट के लिए संकेत करते समय, निम्न का उपयोग करके डिफ़ॉल्ट मान सेट किए जा सकते हैं:
echo "Enter a value" read val val=${val:-"Default Value"}
अगर वेरिएबल वैल पढ़ने के बाद खाली है, डिफ़ॉल्ट मान सेट हो जाएगा।
बहुत सारी टिप्पणियां दें
यह आपके भविष्य के लिए है - स्पष्ट करें कि आप क्या कर रहे हैं और क्यों कर रहे हैं। अपने कोड के इरादे के बारे में स्पष्ट होना एक अच्छी विवेक जांच है और डिबगिंग के साथ सहायता करता है, और व्यापक टिप्पणी करने से बाद की तारीख में आपके कोड पर वापस आना आसान हो जाता है।
प्रिंट, प्रिंट, प्रिंट
कंसोल पर अधिक से अधिक जानकारी प्रिंट करें, ताकि यदि आपकी स्क्रिप्ट क्रैश हो जाए, तो आप जान सकें कहां यह दुर्घटनाग्रस्त हो गया। डिफ़ॉल्ट रूप से बैश स्क्रिप्ट अनिवार्य रूप से वर्बोज़ नहीं होती हैं।
निकास स्थिति छोड़ें
यदि आपकी स्क्रिप्ट में कोई त्रुटि आती है, तो सुनिश्चित करें कि यह एक उपयुक्त निकास कोड के साथ बाहर निकलती है, ताकि अन्य स्क्रिप्ट जो इसे कॉल कर सकती हैं, उचित प्रतिक्रिया दे सकें।