الدوال في Bash Scripts
نظّموا التعليمات البرمجية باستخدام الدوال، لتعزيز قابلية إعادة الاستخدام وجعل scripts أكثر نظافة وأسهل في الصيانة.
الدوال في Bash Scripts درس مجاني في Linux Command Line & Bash Scripting Mastery على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Linux Command Line & Bash Scripting Mastery، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
ما هي الدوال في Bash؟
في كتابة النصوص البرمجية باستخدام Bash، الدالة هي كتلة من التعليمات البرمجية تنفذ مهمة محددة. ويمكنك اعتبارها نصًا برمجيًا صغيرًا داخل النص البرمجي الرئيسي.
تساعدك الدوال على:
- إعادة استخدام التعليمات البرمجية: كتابة جزء من المنطق مرة واحدة واستدعاؤه عدة مرات.
- تنظيم النصوص البرمجية: تقسيم المهام المعقدة إلى وحدات أصغر وأسهل في الإدارة.
- تحسين سهولة القراءة: جعل النص البرمجي أسهل فهمًا وصيانةً.
تعريف دالة بسيطة
هناك طريقتان شائعتان لتعريف دالة في Bash، وكلتاهما تحققان النتيجة نفسها. وتُعد الصيغة الأولى الأكثر شيوعًا.
جرّب تشغيل هذا المثال. فهو يعرّف الدوال، لكنه لا يستدعيها بعد!
#!/bin/bash
# Method 1: The most common way
my_first_func () {
echo "Hello from my_first_func!"
}
# Method 2: Using the 'function' keyword
function my_second_func {
echo "Hello from my_second_func!"
}
echo "Functions defined, but not called."استدعاء الدوال
لا يؤدي تعريف الدالة إلى تنفيذها. ولتشغيل التعليمات البرمجية الموجودة داخل الدالة، ما عليك سوى استدعائها باستخدام اسمها، تمامًا مثل أي أمر آخر.
لاحظ كيف نستدعي my_function بعد تعريفها:
#!/bin/bash
my_function () {
echo "This message is from inside the function."
}
echo "Script started."
my_function # Call the function here
echo "Script finished."المتغيرات المحلية في الدوال
تكون المتغيرات المعرّفة داخل دالة Bash عالمية افتراضيًا، ما يعني إمكانية الوصول إليها وتعديلها من أي مكان في النص البرمجي.
لمنع الآثار الجانبية غير المقصودة والحفاظ على عزل الدوال، استخدم الكلمة المفتاحية local لتعريف المتغير على أنه محلي. ولا تكون المتغيرات المحلية موجودة إلا داخل تلك الدالة.
#!/bin/bash
global_message="I'm a global message"
my_function () {
local func_message="I'm a local message"
global_message="I've been changed by the function!"
echo "Inside func: $func_message"
echo "Inside func: $global_message"
}
echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"تمرير المعاملات إلى الدوال
يمكنك تمرير المعلومات إلى الدوال باستخدام المعاملات، تمامًا كما تفعل مع أوامر الصدفة العادية. وداخل الدالة، يمكن الوصول إلى هذه المعاملات باستخدام متغيرات خاصة:
$1و$2و$3...: المعاملات الفردية$#: العدد الإجمالي للمعاملات$@: جميع المعاملات كسلاسل منفصلة
#!/bin/bash
greet_user () {
echo "Hello, $1!"
echo "You are $2 years old."
echo "Total arguments received: $#"
echo "All arguments: $@"
}
echo "Calling greet_user with two arguments:"
greet_user "Alice" 30
echo "\nCalling greet_user with one argument:"
greet_user "Bob"حالة خروج الدالة (Return)
تعيد الدالة، مثلها مثل أي أمر، حالة خروج. ووفقًا لل convention، تعني القيمة 0 النجاح، بينما تشير أي قيمة غير صفرية إلى حدوث خطأ.
تستخدم الكلمة المفتاحية return لتعيين حالة الخروج هذه. ويمكنك بعد ذلك التحقق منها باستخدام المتغير الخاص $? مباشرة بعد استدعاء الدالة.
#!/bin/bash
check_age () {
local age=$1
if [ "$age" -ge 18 ]; then
return 0 # Success: 18 or older
else
return 1 # Failure: under 18
fi
}
check_age 25
echo "Exit status for 25: $?"
check_age 16
echo "Exit status for 16: $?"
if check_age 20; then
echo "User is an adult."
else
echo "User is a minor."
fiالتقاط مخرجات الدالة
بينما يرسل return حالة خروج، إذا أردت أن تنتج الدالة «قيمة» يمكن تخزينها في متغير، فعلى الدالة استخدام echo لإرسال تلك القيمة إلى المخرجات القياسية.
بعد ذلك، تلتقط هذه المخرجات باستخدام استبدال الأوامر، وذلك بإحاطة استدعاء الدالة بـ $(...).
#!/bin/bash
get_full_name () {
local first_name=$1
local last_name=$2
echo "$first_name $last_name" # Echo the full name
}
name="$(get_full_name "John" "Doe")"
echo "Full name captured: $name"
calculate_area () {
local length=$1
local width=$2
echo $((length * width))
}
area=$(calculate_area 10 5)
echo "Calculated area: $area"مثال عملي: مسجّل
إليك مثالًا عمليًا على دالة قابلة لإعادة الاستخدام: مسجّل بسيط. يمكن استدعاء هذه الدالة في أي موضع من النص البرمجي لطباعة الرسائل مع طابع زمني، مما يسهل تصحيح الأخطاء والتتبع.
#!/bin/bash
log_message () {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local message="$1"
echo "[$timestamp] $message"
}
log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."أفضل الممارسات للدوال
لكتابة نصوص برمجية واضحة وقابلة للصيانة باستخدام الدوال، ضع النصائح التالية في الاعتبار:
- حافظ على البساطة: ينبغي لكل دالة أن تؤدي مهمة واحدة بإتقان.
- استخدم أسماء معبّرة: استخدم أسماء وصفية مثل
validate_inputأوcreate_backup. - استخدم
local: استخدمlocalدائمًا للمتغيرات داخل الدوال لتجنب التعارضات. - أضف تعليقات: اشرح ما تفعله الدالة، ومعاملاتها، وما تعيده.
- تحقق من الإدخال: إذا كانت الدالة تتوقع معاملات محددة، فتحقق منها.
التحقق من معاملات الدالة
اختبر مدى فهمك لكيفية تمرير المعاملات إلى دوال Bash والوصول إليها داخلها.
الدوال: مراجعة والخطوات التالية
أحسنت! لقد أتقنت دوال Bash.
لقد تناولنا ما يلي:
- تعريف الدوال واستدعاؤها.
- استخدام
localلتحديد نطاق المتغيرات. - تمرير المعاملات باستخدام
$1و$#و$@. - تعيين حالة الخروج باستخدام
return. - التقاط المخرجات باستخدام
echoواستبدال الأوامر.
تُعد الدوال ضرورية لكتابة نصوص Bash معيارية وقابلة لإعادة الاستخدام والصيانة. واصل التدريب لجعل نصوصك البرمجية أكثر قوة وتنظيمًا!
الأسئلة الشائعة
هل درس «الدوال في Bash Scripts» مجاني؟
نعم — نص درس «الدوال في Bash Scripts» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Linux Command Line & Bash Scripting Mastery، انتقل إلى CoddyKit PRO. تتضمن دورة Linux Command Line & Bash Scripting Mastery 4 دروس في المجموع.
ماذا ستتعلم في «الدوال في Bash Scripts»؟
نظّموا التعليمات البرمجية باستخدام الدوال، لتعزيز قابلية إعادة الاستخدام وجعل scripts أكثر نظافة وأسهل في الصيانة. تتمرن على Linux Command Line & Bash Scripting Mastery مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Linux Command Line & Bash Scripting Mastery؟
لا تُشترط خبرة سابقة. Linux Command Line & Bash Scripting Mastery على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الدوال في Bash Scripts»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Linux Command Line & Bash Scripting Mastery هذا؟
نعم. كل درس في Linux Command Line & Bash Scripting Mastery يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تراكيب الحلقات (for، while)
- الدوال في Bash Scripts
- وسائط واختيارات Script ($@، $ of، getopts)
- عبارة case ومطابقة الأنماط