تقوم وظائف Bash بتجميع الأوامر ذات الصلة تحت اسم واحد. عند استدعاء هذا الاسم، يتم تنفيذ الكتلة بأكملها. يمكنك تمرير الوسائط لتخصيص السلوك وإرجاع القيم لتوصيل النتائج. وهذا يبقي التعليمات البرمجية الخاصة بك نظيفة وسهلة الصيانة.
يهيمن Linux على بيئات الخوادم عالميًا، لذا فإن إتقان وظائف Bash أصبح الآن أكثر أهمية من أي وقت مضى. تعمل الوظائف على تحويل البرامج النصية الفوضوية إلى أتمتة نظيفة وقابلة لإعادة الاستخدام.
يرشدك هذا الدليل عبر بناء الجملة الأساسي إلى حالات الاستخدام المتقدمة. ستتعلم كيفية الإعلان عن الوظائف، وتمرير المعلمات، والتعامل مع قيم الإرجاع، والاطلاع على عشرة أمثلة عملية يمكنك استخدامها في البرامج النصية الخاصة بك.
ليرة تركية؛ د
- تسمى وظائف Bash كتل التعليمات البرمجية التي يمكنك إعادة استخدامها في جميع البرامج النصية الخاصة بك
- تحديد الوظائف باستخدام function_name() { الأوامر؛ } بناء الجملة
- تمرير الحجج باستخدام $1, $2, $3 المعلمات الموضعية
- تعمل الوظائف على تحسين إمكانية قراءة التعليمات البرمجية والنمطية والصيانة
- يستخدم يعود للخروج من الوظائف وإبلاغ رموز الحالة (0 = نجاح، غير صفر = فشل)
- يمكن مشاركة الوظائف بين البرامج النصية باستخدام مصدر or تصدير -f
- تتضمن الأمثلة العملية النسخ الاحتياطي للملفات ومراقبة القرص والتحقق من صحة الإدخال وفحص الخدمة
ما هي البرمجة النصية باش؟

البرمجة النصية لـ Bash هي طريقة لأتمتة المهام باستخدام Bash Shell. إنها بمثابة واجهة سطر الأوامر الافتراضية لنظام التشغيل Linux وتظل أداة قياسية على نظام التشغيل macOS. برنامج Bash النصي هو برنامج تم ترميزه بلغة البرمجة النصية Bash، ويمكن تنفيذه في محطة طرفية أو كملف نصي مستقل.
مع يتزايد استخدام Linux لسطح المكتب بشكل مطرد ونظام التشغيل الذي يهيمن على بيئات الخوادم في جميع أنحاء العالم، أصبحت مهارات البرمجة النصية Bash ذات قيمة لمحترفي تكنولوجيا المعلومات. تتكامل اللغة بشكل جيد مع أدوات DevOps مثل خطوط أنابيب Docker وKubernetes وCI/CD.
تتيح لك البرمجة النصية لـ Bash إنجاز المهام بدءًا من الأوامر البسيطة وحتى الأتمتة المعقدة وإدارة النظام. يمكنك أتمتة المهام المتكررة، وتطوير البرامج النصية للصيانة، وإنشاء خطوط أنابيب النشر، وإدارة أنظمة البرامج، ومعالجة البيانات.
ما هي وظيفة باش؟

يمكن تعريف وظيفة Bash على أنها مجموعة من الأوامر التي يتم تعريفها إما ضمن برنامج Bash النصي أو يتم تعيينها بشكل تفاعلي في موجه الأوامر، اعتمادًا على حالة الاستخدام. بمجرد تعريف دالة Bash، يمكن استدعاؤها عدة مرات داخل البرنامج النصي أو في برامج نصية أخرى، تمامًا مثل أمر Shell العادي.
تتيح لك وظائف Bash إنشاء كتل من التعليمات البرمجية قابلة لإعادة الاستخدام يمكنها إجراء عمليات معقدة وتنظيم التعليمات البرمجية الخاصة بك وتبسيط البرامج النصية الخاصة بك. يمكنك تمرير الوسائط إلى دالة Bash، ثم استخدامها داخل الوظيفة لتنفيذ العمليات. تقوم وظائف Bash بإرجاع القيم التي يمكنك استخدامها في أي مكان آخر في البرنامج النصي الخاص بك.
e سوف يغطي العديد من أساليب التنفيذ المحددة، بما في ذلك simple_function للمنطق الأساسي، simple_inputs للتعامل مع الوسيطة، والهياكل المتقدمة مثل fibonnaci_recursion.
وظائف باش الأساسية مهم لأي مسؤول نظام أو مهندس DevOps يعمل مع التشغيل الآلي. تتناول الأقسام التالية كل نوع من هذه الأنواع بالتفصيل.
لماذا استخدام وظائف باش؟

الآن بعد أن تم تعريف وظائف Bash، دعونا نراجع مزاياها الرئيسية. يساعدك هذا القسم على فهم الوظائف الأكثر فائدة.
قابلية إعادة الاستخدام
قمت بإنشاء وظيفة Bash، ولديك أداة قوية. يمكنك كتابة مقطع تعليمات برمجية مرة واحدة وإعادة استخدامه عدة مرات داخل البرنامج النصي الخاص بك أو حتى في البرامج النصية الأخرى.
وهذا يجعل التعليمات البرمجية الخاصة بك أكثر كفاءة ويوفر الوقت عن طريق القضاء على الازدواجية. تصبح المحافظة على الكود الخاص بك أكثر بساطة حيث أنك تحتاج فقط إلى تغيير الوظيفة في مكان واحد.
سهولة القراءة
قد يكون من الصعب فك رموز النصوص المعقدة. تعمل وظائف Bash على حل هذه المشكلة عن طريق تقسيم البرنامج النصي إلى أجزاء أصغر وأكثر قابلية للإدارة.
تخدم كل وظيفة غرضًا محددًا باسم وصفي يوضح دورها. يساعدك هذا أنت والآخرين على فهم التعليمات البرمجية والحفاظ عليها بسهولة أكبر.
نمطية
وظائف تنظيم التعليمات البرمجية الخاصة بك. يمكنك تقسيم المنطق إلى وحدات أصغر، مما يحافظ على بنية البرنامج النصي نظيفة وسهلة الإدارة.
وإذا كنت بحاجة إلى إضافة ميزة جديدة، فيمكنك القيام بذلك دون العبث بأجزاء أخرى من البرنامج النصي الخاص بك. عندما يحين وقت إزالة الوظيفة أو تعديلها، يظل باقي البرنامج النصي سليمًا.
معلمات وظيفة باش
يمكنك تمرير الوسائط أو المعلمات إلى وظائفك. تسمح هذه الوسائط لوظائفك بالتكيف وتنفيذ إجراءات مختلفة بناءً على المدخلات التي تتلقاها.
وهذا يفتح العديد من الاحتمالات بينما يجعل وظائفك أكثر تنوعًا وقابلية للتكيف. بدلاً من كتابة تعليمات برمجية مماثلة عدة مرات، يمكنك كتابة دالة واحدة تتعامل مع مدخلات مختلفة.
كيف وأين تستخدم وظائف باش؟

الآن، دعونا نتعرف قليلاً على التعريف الفني ونبدأ بمثال قصير عن كيفية إنشاء وظائف Bash. يمكن استخدام بناء الجملة التالي في البيئات المستندة إلى Unix. إذا كنت تعمل على نظام التشغيل Windows، فيمكنك ذلك تثبيت Linux Bash على نظام التشغيل Windows 10 لمتابعة جنبا إلى جنب مع هذه الأمثلة.
إنشاء وظيفة باش
ابدأ باستخدام بنية الأوامر التالية:
اسم_الوظيفة () {
# الأوامر تذهب هنا
}
بمجرد إنشاء الوظيفة، يمكنك استخدامها في التعليمات البرمجية الخاصة بك في أي وقت. إليك مثال عملي:
تحية () {
صدى "مرحبًا، 1 دولار!"
}
استدعاء هذه الوظيفة مع تحية العالم لإخراج "Hello, World!" ال $1 يمثل الوسيطة الأولى التي تم تمريرها إلى الوظيفة.
فيما يلي بعض الأمثلة العملية التي يمكنك استخدامها في البرامج النصية الخاصة بك:
# إنشاء نسخة احتياطية من أي ملف
ملف النسخ الاحتياطي () {
سي بي "$1" "$1.bak"
صدى "تم إنشاء نسخة احتياطية: $1.bak"
}
# تحقق من وجود الدليل، وقم بإنشائه إذا لم يكن موجودًا
ضمان_دير () {
لو [ ! -د "$1" ]؛ ثم
مكدير -p "$1"
صدى "الدليل الذي تم إنشاؤه: $1"
fi
}
# سجل الرسائل مع الطوابع الزمنية
رسالة السجل () {
صدى "[$(التاريخ '+%Y-%m-%d %H:%M:%S')] $1"
}
يمكنك تحديد وظائف Bash المخصصة هذه مرة واحدة واستدعاءها عند الحاجة خلال البرنامج النصي الخاص بك.
أساسيات بناء الجملة الوظيفية
تعمل الوظائف مثل البرامج النصية المصغرة داخل البرنامج النصي الرئيسي الخاص بك، ولكنها تشترك في ذاكرة الصدفة. ضع هذه السلوكيات الثلاثة المحددة في الاعتبار عند كتابتها.
النطاق المتغير (المحلي مقابل العالمي)
المتغيرات داخل الوظائف عالمية بشكل افتراضي. إذا قمت بتحديد my_var = "اختبار" داخل وظيفة، فإنه يتجاوز أي موجود my_var في البرنامج النصي الخاص بك. استخدم دائما محلي حصر المتغيرات في الدالة يمنع حدوث آثار جانبية:
محلي my_var = "القيمة"
المعلمات الموضعية
وظائف قراءة الحجج باستخدام نفسه $1, $2، و $@ المتغيرات كمخطوطات. هذه تكون محلية للوظيفة ويتم إعادة تعيينها عند خروج الوظيفة. لا يمكن الوصول إلى الوسائط الأصلية للبرنامج النصي داخل الوظيفة إلا إذا قمت بتمريرها بشكل صريح.
إرجاع القيم
لا تقوم وظائف Bash بإرجاع بيانات مثل وظائف Python أو JavaScript. ال يعود يقوم الأمر فقط بتعيين حالة الخروج (0-255) للإشارة إلى النجاح أو الفشل. لإرجاع بيانات فعلية (مثل سلسلة أو عملية حسابية)، صدى النتيجة والتقاطها عند استدعاء الوظيفة:
النتيجة=$(my_function)
أفضل 10 أمثلة مفيدة لوظائف Bash
الآن بعد أن فهمت وظائف Bash وكيفية إنشائها، إليك عشرة أمثلة عملية يمكنك إضافتها إلى نصوصك البرمجية. تحل كل دالة مشكلة شائعة وتوضح البنية والوسائط وقيم الإرجاع المناسبة.
1. وظيفة النسخ الاحتياطي للملفات
إنشاء نسخة احتياطية ذات طابع زمني لأي ملف:
ملف النسخ الاحتياطي () {
الملف المحلي=”$1″
النسخة الاحتياطية المحلية=”${file}.$(date +%Y%m%d_%H%M%S).bak”
إذا [ -f "ملف $" ]؛ ثم
cp "ملف $" "$ نسخة احتياطية"
صدى "تم إنشاء نسخة احتياطية: $backup"
العودة 0
آخر
صدى "خطأ: الملف غير موجود"
العودة 1
fi
}
الاستخدام: Backup_file /etc/nginx/nginx.conf
2. مدقق الدليل
يتحقق من وجود الدليل ويقوم بإنشائه إذا لزم الأمر:
ضمان_دير () {
الدليل المحلي=”$1″
لو [ ! -د "$dir"]; ثم
مكدير -p "$dir"
صدى "تم الإنشاء: $dir"
fi
}
الاستخدام: تأكد_دير /var/log/myapp
3. مسجل الطابع الزمني
يضيف الطوابع الزمنية لتسجيل الرسائل لتصحيح الأخطاء:
رسالة السجل () {
المستوى المحلي=”$1″
الرسالة المحلية=”$2″
صدى "[$(التاريخ '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}
الاستخدام: log_message "INFO" "بدأ البرنامج النصي"
4. مراقب مساحة القرص
يتحقق من استخدام القرص ويحذر إذا تجاوز الحد الأدنى:
check_disk_space () {
العتبة المحلية =”${1:-80}”
الاستخدام المحلي=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
إذا [ "$usage" -gt "$threshold"]؛ ثم
صدى "تحذير: استخدام القرص عند ${usage}%"
العودة 1
fi
العودة 0
}
الاستخدام: check_disk_space 90
5. مدقق الإدخال
التحقق من أن إدخال المستخدم ليس فارغًا:
Validate_input () {
الإدخال المحلي=”$1″
الاسم المحلي=”$2″
إذا [ -z "$الإدخال" ]؛ ثم
صدى "خطأ: لا يمكن أن يكون $name فارغًا"
العودة 1
fi
العودة 0
}
الاستخدام: validate_input "اسم المستخدم$" "اسم المستخدم"
6. مدقق حالة الخدمة
يتحقق مما إذا كانت الخدمة قيد التشغيل ويبلغ عن الحالة:
خدمة التحقق () {
الخدمة المحلية=”$1″
إذا كان systemctl نشطًا - "خدمة $" هادئة؛ ثم
صدى "خدمة $ قيد التشغيل"
العودة 0
آخر
صدى "خدمة $ ليست قيد التشغيل"
العودة 1
fi
}
الاستخدام: check_service nginx
7. مستخرج امتداد الملف
استخراج الامتداد من اسم الملف:
الحصول على ملحق () {
اسم الملف المحلي=”$1″
صدى "${filename##*.}"
}
الاستخدام: تحويلة=$(get_extension “document.pdf”)
8. سلسلة المتقلب
إزالة المسافات البيضاء البادئة والزائدة من السلاسل:
تقليم_سلسلة () {
شارع محلي=”$1″
str=”${str#”${str%%[![:space:]]*}”}”
str=”${str%”${str##*[![:space:]]}”}”
صدى "$str"
}
الاستخدام: clean=$(trim_string ”مرحبا بالعالم“)
9. أرشيف الملفات الآمن
ينقل ملفًا إلى دليل $HOME/.trash المخصص بدلاً من حذفه نهائيًا. يقوم بإلحاق طابع زمني لاسم الملف لمنع الكتابة فوق النسخ الاحتياطية السابقة.
آمنة_إزالة () {
الملف المحلي=”$1″
سلة المهملات المحلية=”$HOME/.trash”
# إلحاق الطابع الزمني لتجنب الكتابة فوق الملفات الموجودة
new_name المحلي = "$(الاسم الأساسي "$file")_$(التاريخ +%s)"
مكدير -p "$ المهملات"
إذا [ -e "ملف $" ]؛ ثم
mv "$file" "$trash/$new_name"
صدى "تم النقل إلى الأرشيف: $file -> $trash/$new_name"
آخر
صدى "خطأ: لم يتم العثور على ملف $"
العودة 1
fi
}
الاستخدام: Safe_remove old_script.sh
10. مراسل الحالة
يوضح آلية إرجاع وظيفة Bash لمعالجة الأخطاء. تشير قيمة إرجاع الدالة Bash إلى النجاح (0) أو الفشل (غير الصفر):
بيانات_العملية () {
الملف المحلي=”$1″
لو [ ! -f "ملف $" ]; ثم
العودة 1
fi
# معالجة الملف
القط "ملف $" | مرحاض -ل
العودة 0
}
# التحقق من قيمة الإرجاع
بيانات_العملية "data.txt"
إذا [$؟ -مكافئ 0 ]; ثم
صدى "اكتملت المعالجة"
آخر
صدى "فشلت المعالجة"
fi
ال $? يلتقط المتغير حالة الخروج من آخر أمر أو استدعاء دالة.
| وظيفة | غاية | الميزة الرئيسية |
| ملف النسخ الاحتياطي | إنشاء نسخ احتياطية للملفات | تسمية الطابع الزمني |
| تأكد_دير | إدارة الدليل | يخلق إذا كان في عداد المفقودين |
| log_message | التسجيل | بادئة الطابع الزمني |
| check_disk_space | مراقبة النظام | تنبيهات عتبة |
| validate_input | التحقق من صحة الإدخال | فحص سلسلة فارغة |
| check_service | مراقبة الخدمة | تكامل النظام |
| get_extension | تحليل السلسلة | توسيع المعلمة |
| Trim_string | تنظيف السلسلة | إزالة المسافة البيضاء |
| Safe_remove | الحذف الآمن | دليل سلة المهملات |
| Process_data | معالجة الأخطاء | إرجاع القيم |
تشغيل وظائف Bash على VPS
تصبح وظائف Bash قوية عند تشغيلها على بيئة خادم مخصصة. ملكنا لينكس فس يمنحك الوصول الكامل إلى الجذر لتخصيص بيئة الصدفة الخاصة بك، وإنشاء مكتبات وظائف على مستوى النظام، وأتمتة مهام إدارة الخادم دون قيود.
باستخدام VPS، يمكنك تخزين الوظائف القابلة لإعادة الاستخدام فيه /etc/profile.d/ لجميع المستخدمين، قم بجدولة البرامج النصية المستندة إلى الوظائف عبر وظائف cron، وقم ببناء مسارات التشغيل الآلي للنشر والصيانة. نحن نقدم خوادم في 12 موقعًا عالميًا بسرعات شبكة تصل إلى 40 جيجابت في الثانية وذاكرة DDR5، مما يعني تنفيذ أسرع للنصوص البرمجية ومعالجة أكثر سلاسة للبيانات.
هذا المستوى من التحكم يجعل VPS مثاليًا لأي شخص جاد في البرمجة النصية وأتمتة النظام.
خاتمة
تعد وظائف Bash أساسية لإنشاء نصوص برمجية معيارية وقابلة لإعادة الاستخدام. إنها تسمح لك بتجميع الأوامر ذات الصلة معًا وتغليف المنطق المعقد لتسهيل قراءة التعليمات البرمجية الخاصة بك وصيانتها. إذا كنت تدير البنية التحتية السحابية، أو تقوم بأتمتة مسارات النشر، أو تتعامل مع مهام إدارة النظام الروتينية، فإن الوظائف تساعد في الحفاظ على البرامج النصية الخاصة بك منظمة وفعالة.
في هذه المقالة، قمنا بتغطية أساسيات وظائف Bash، بما في ذلك كيفية تعريفها واستدعائها، وعشرة أمثلة عملية للوظائف، وحالات الاستخدام الشائعة لمساعدتك على البدء في مشاريع الأتمتة الخاصة بك.
جنبا إلى جنب مع هياكل التحكم مثل باش لو بيانتمنحك الوظائف العناصر الأساسية للتشغيل الآلي القوي. باستخدام وظائف Bash في البرامج النصية الخاصة بك، يمكنك كتابة تعليمات برمجية أكثر وضوحًا وأكثر معيارية يسهل فهمها وصيانتها.