शेल फ़ंक्शन से कार्यों का स्वचालन
जटिल स्क्रिप्ट और कार्यप्रवाह को मॉड्यूलर तथा सरल बनाने के लिए पुनः उपयोग योग्य शेल फ़ंक्शन लिखें।
शेल फ़ंक्शन से कार्यों का स्वचालन, CoddyKit पर Linux कमांड लाइन में दक्षता का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Linux कमांड लाइन में दक्षता सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Linux कमांड लाइन में दक्षता पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
शेल फ़ंक्शन क्या हैं
शेल फ़ंक्शन आपकी मुख्य स्क्रिप्ट या शेल सत्र के भीतर मौजूद छोटी स्क्रिप्ट जैसे होते हैं। इनके माध्यम से आप किसी विशेष कार्य को करने के लिए कमांडों को एक साथ समूहित कर सकते हैं।
- पुनः उपयोग: कमांडों के उसी समूह को दोबारा लिखे बिना कई बार चलाएँ।
- व्यवस्था: जटिल स्क्रिप्ट को छोटे, प्रबंधनीय हिस्सों में बाँटें।
- मॉड्यूलरिटी: पठनीयता सुधारें और अपनी स्क्रिप्ट का रखरखाव आसान बनाएँ।
इन्हें अपने द्वारा परिभाषित कस्टम कमांड के रूप में समझिए!
सरल फ़ंक्शन परिभाषित करना
फ़ंक्शन परिभाषित करना सरल है। आप उसे एक नाम देते हैं, उसके बाद कोष्ठक लगाते हैं (कुछ शेल में ये वैकल्पिक होते हैं, लेकिन इनका उपयोग करना अच्छा अभ्यास है), और फिर घुंघराले कोष्ठकों में कमांड लिखते हैं।
इस सरल उदाहरण को चलाकर देखें:
#!/bin/bash
# Define a function named 'say_hello'
say_hello() {
echo "Hello, CoddyKit user!"
}
# Call the function
say_helloफ़ंक्शन को कॉल करना
परिभाषित किए जाने के बाद, आप किसी अन्य कमांड की तरह केवल उसका नाम लिखकर फ़ंक्शन को कॉल कर सकते हैं। आपकी स्क्रिप्ट में फ़ंक्शन को कई बार कॉल किया जा सकता है।
दोहराए जाने वाले कार्य को करने के लिए फ़ंक्शन को इस तरह कॉल किया जा सकता है:
#!/bin/bash
log_action() {
echo "[INFO] Action performed: $1"
}
echo "Starting daily tasks..."
log_action "Backup database"
log_action "Clean temporary files"
log_action "Send notification"
echo "Daily tasks completed."फ़ंक्शन में आर्ग्युमेंट पास करना
जब आप फ़ंक्शन को जानकारी पास कर सकते हैं, तो वे अधिक शक्तिशाली बन जाते हैं। इन्हें आर्ग्युमेंट कहा जाता है।
फ़ंक्शन के भीतर आर्ग्युमेंट को विशेष वेरिएबल का उपयोग करके प्राप्त किया जाता है: पहले आर्ग्युमेंट के लिए $1, दूसरे के लिए $2 और इसी प्रकार आगे। $@ सभी आर्ग्युमेंट को दर्शाता है।
#!/bin/bash
greet_person() {
echo "Hello, $1! Welcome to CoddyKit."
echo "We heard you like $2."
}
# Call with arguments
greet_person Alice Bash
greet_person Bob Pythonवापसी मानों को समझना
कुछ प्रोग्रामिंग भाषाओं के विपरीत, शेल फ़ंक्शन पारंपरिक अर्थों में कोई मान (जैसे संख्या या स्ट्रिंग) 'वापस' नहीं करते। इसके बजाय, वे एक निकास स्थिति लौटाते हैं।
आमतौर पर 0 की निकास स्थिति सफलता दर्शाती है, जबकि कोई भी अन्य संख्या (1-255) त्रुटि दर्शाती है। आप इसे return कमांड का उपयोग करके स्पष्ट रूप से सेट कर सकते हैं। आउटपुट प्राप्त करने के लिए echo का उपयोग करें।
#!/bin/bash
check_number() {
if (( $1 % 2 == 0 )); then
echo "Number $1 is even."
return 0 # Success
else
echo "Number $1 is odd."
return 1 # Failure
fi
}
check_number 4
echo "Exit status: $?"
check_number 7
echo "Exit status: $?"स्थानीय वेरिएबल का उपयोग करना
किसी फ़ंक्शन के भीतर परिभाषित वेरिएबल डिफ़ॉल्ट रूप से वैश्विक होते हैं, यानी वे फ़ंक्शन के बाहर मौजूद वेरिएबल को प्रभावित कर सकते हैं। इससे अप्रत्याशित व्यवहार हो सकता है।
इसे रोकने के लिए, केवल उसी फ़ंक्शन के भीतर पहुँच योग्य वेरिएबल घोषित करने हेतु local कीवर्ड का उपयोग करें। इससे आपके फ़ंक्शन का दायरा व्यवस्थित रहता है।
#!/bin/bash
global_message="I am a global message."
my_function() {
local function_message="I am local to the function."
echo "Inside function: $global_message"
echo "Inside function: $function_message"
}
echo "Outside function (before call): $global_message"
my_function
echo "Outside function (after call): $global_message"
# Trying to access function_message here would fail.बड़ी स्क्रिप्ट में फ़ंक्शन
लंबी स्क्रिप्ट के लिए फ़ंक्शन को शुरुआत में परिभाषित करना अच्छा अभ्यास है। इससे यह सुनिश्चित होता है कि स्क्रिप्ट का कोई भी भाग उन्हें कॉल करने का प्रयास करने से पहले वे उपलब्ध हों।
फ़ंक्शन जटिल स्वचालन कार्यों को तार्किक और पुनः उपयोग योग्य खंडों में बाँटने में मदद करते हैं।
#!/bin/bash
# --- Function Definitions ---
log_info() {
echo "[INFO] $(date +%H:%M:%S) - $1"
}
create_backup() {
local target_dir="/tmp/backups"
log_info "Creating backup in $target_dir..."
mkdir -p "$target_dir"
# Simulate backup process
sleep 1
log_info "Backup completed for $1."
}
# --- Main Script Logic ---
log_info "Script started."
create_backup "website_data"
create_backup "user_configs"
log_info "Script finished."बाहरी फ़ंक्शन फ़ाइलों को सोर्स करना
आप फ़ंक्शन को एक अलग फ़ाइल में संग्रहीत करके फिर उन्हें अपनी मुख्य स्क्रिप्ट या शेल सत्र में 'सोर्स' कर सकते हैं। कई स्क्रिप्ट में सामान्य फ़ंक्शन साझा करने के लिए यह बहुत उपयोगी है।
source कमांड (या इसका संक्षिप्त रूप, .) निर्दिष्ट फ़ाइल से कमांड पढ़ती और वर्तमान शेल वातावरण में उन्हें निष्पादित करती है।
my_library.shकी सामग्री:#!/bin/bash hello_world() { echo "Hello from my_library!" } calculate_square() { echo $(( $1 * $1 )) }main_script.shकी सामग्री:#!/bin/bash source my_library.sh hello_world result=$(calculate_square 7) echo "The square of 7 is: $result"
जब आप main_script.sh चलाते हैं, तो यह my_library.sh में परिभाषित फ़ंक्शन निष्पादित करेगी।
व्यावहारिक उदाहरण: कमांड जाँच
यह एक उपयोगी फ़ंक्शन है जो जाँचता है कि कोई विशेष कमांड सिस्टम पर उपलब्ध है या नहीं। आपकी स्क्रिप्ट आगे बढ़ने से पहले आवश्यक शर्तें पूरी हैं या नहीं, यह सुनिश्चित करने के लिए इसका उपयोग किया जा सकता है।
#!/bin/bash
command_exists() {
# 'type -P' checks if command exists in PATH
# '&> /dev/null' redirects all output to nowhere
type -P "$1" &> /dev/null
}
echo "Checking for common commands..."
if command_exists "git"; then
echo "Git is installed. Great!"
else
echo "Git is not installed. Please install it."
fi
if command_exists "nonexistent_command"; then
echo "This shouldn't print."
else
echo "'nonexistent_command' is not found, as expected."
fiप्रश्नोत्तरी: फ़ंक्शन का दायरा
निम्नलिखित शेल स्क्रिप्ट पर विचार करें। इसका आउटपुट क्या होगा?
#!/bin/bash
my_func() {
local msg="World"
echo "$1 $msg"
}
msg="CoddyKit"
my_func "Hello"
echo "$msg"पुनरावृत्ति: शेल फ़ंक्शन
आपने शेल फ़ंक्शन में दक्षता प्राप्त कर ली है! यहाँ एक संक्षिप्त सारांश दिया गया है:
- फ़ंक्शन पुनः उपयोग और व्यवस्था के लिए कमांडों को समूहित करते हैं।
- उन्हें
function_name() { commands; }से परिभाषित करें और नाम से कॉल करें। $1,$2आदि का उपयोग करके आर्ग्युमेंट पास करें।- फ़ंक्शन एक निकास स्थिति लौटाते हैं (सफलता के लिए
0); आउटपुट के लिएechoका उपयोग करें। - फ़ंक्शन के दायरे में वेरिएबल घोषित करने के लिए
localका उपयोग करें। - आप फ़ंक्शन साझा करने के लिए उन्हें बाहरी फ़ाइलों से सोर्स कर सकते हैं।
फ़ंक्शन अधिक सुव्यवस्थित, प्रभावी और स्वचालित शेल स्क्रिप्ट लिखने का शक्तिशाली साधन हैं। अभ्यास करते रहें!
एआई शिक्षक के साथ Linux कमांड लाइन में दक्षता सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “शेल फ़ंक्शन से कार्यों का स्वचालन” पाठ निःशुल्क है?
हाँ—“शेल फ़ंक्शन से कार्यों का स्वचालन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Linux कमांड लाइन में दक्षता पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Linux कमांड लाइन में दक्षता पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“शेल फ़ंक्शन से कार्यों का स्वचालन” में मैं क्या सीखूँगा?
जटिल स्क्रिप्ट और कार्यप्रवाह को मॉड्यूलर तथा सरल बनाने के लिए पुनः उपयोग योग्य शेल फ़ंक्शन लिखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Linux कमांड लाइन में दक्षता का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Linux कमांड लाइन में दक्षता शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Linux कमांड लाइन में दक्षता शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“शेल फ़ंक्शन से कार्यों का स्वचालन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Linux कमांड लाइन में दक्षता पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Linux कमांड लाइन में दक्षता पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- कार्य निर्धारण: `cron` और `at`
- सेवा प्रबंधन: `systemctl` (systemd)
- शेल फ़ंक्शन से कार्यों का स्वचालन
- journald और logrotate से केंद्रीकृत लॉगिंग और रोटेशन