كتابة نص بورن آجين شل (Bash) يمكن أن تكون تجربة مجزية، خاصة عندما تضيف البرمجة اللوجيستية إليها، مضمونًا جاهزيتها. وسيلة لتضمين هذه البرمجة، وجعل نصك أكثر ذكاءً، هو من خلال استخدام التصريحات الشرطية، تحديداً “باش إذا وإلا”.
في هذا الاستكشاف العميق، ستفهم قوة وتفاصيل التصريحات الشرطية في باش، مما سيساعدك في صياغة نصوص باش ذكية خالية من الأخطاء. سنرشدك أيضًا لبعض الممارسات الجيدة للتأكد من أنك تقوم بالبرمجة كمحترف.
متحمس؟ اغمر في العمق، وطوِّر مهارات برمجة باش الخاصة بك!
إعداد المنصة: المتطلبات الأولية
للاستفادة القصوى من هذا البرنامج التعليمي، يجب أن تكون بعض الأمور الأساسية متاحة:
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
لماذا يجب عليك الاستفادة من تصريحات باش إذا وإلا؟
لماذا تحظى التصريحات الشرطية بتقدير كبير في برمجة باش؟ ببساطة، لأنها تمنح نصوصك قدرة على اتخاذ القرارات استنادًا إلى شروط محددة مسبقًا.
على سبيل المثال، يمكنك استخدام “باش إذا وإلا” للتحقق مما إذا كان ملف موجودًا قبل محاولة حذفه. بالمثل، قد ترغب في التحقق مما إذا كان المستخدم يحمل الصلاحيات المطلوبة قبل السماح له بالوصول إلى مورد.
تطوير النصوص بمناهج ‘bash if else’ ليس فقط يزيد من مرونتها ولكن يعزز من فاعليتها أيضًا. تخيل نصًا مصممًا لتطهير جميع الملفات في مجلد. باستخدام ‘bash if else’، يمكنك حذف تلك الملفات ذات العمر الأكبر من 30 يومًا جراحيًا، مع الحفاظ على الباقي.
التعمق في بيان ‘bash if else’
الآن، دعنا نترك التمهيد ونبدأ في العمل الفعلي. سنبدأ بواحدة من أشهر البيانات الشرطية المعتمدة عالميًا: بيان ‘bash if else’.
في جوهره، ‘bash if else’ هو بوابة لإدراج شروط في نصوص باش الخاصة بك. انظر إلى بناء الجملة البسيط أدناه:
- يبدأ بالكلمة الرئيسية if، تليها الشروط المغلفة داخل [[ ]]. بعد ذلك، يتم تنفيذ الكود الموجود داخل بيان ‘bash if else’، ويختتم الأمر بالكلمة الرئيسية fi.
- تفصل كلمة then الشرط عن الإجراءات (أو البيانات) التي يتم تنفيذها عندما تُرضى الشروط. يمكن أن يمتد كتلة الإجراءات هذه عبر عدة أسطر، مفصولة بفاصلات منقوطة (;).
تخيل كتابة نظام تسجيل الدخول. يطلب اسم المستخدم الصحيح قبل منح الوصول:
1. قم بتشغيل وحدة التحكم الخاصة بك وابدأ ملف bash_if_demo.sh باستخدام محرر النصوص المفضل لديك. سيكون هذا ساحتنا لفهم بيانات ‘bash if else’.
2. قم بتضمين مثال “bash if else” المقدم أدناه في ملف “bash_if_demo.sh” الخاص بك. بمجرد الإدراج، قم بحفظ التعديلات وإغلاق المحرر.
يقوم البرنامج النصي “bash if else” بطلب اسم المستخدم. إذا تم إدخال اسم المستخدم المتوقع، فإن رسالة ترحيب تظهر، مع إضافة تاريخ ووقت الحالي.
الحفاظ على سجل لتاريخ ووقت محاولات دخول المستخدم يمكن أن يكون قيمًا للتحليلات المستقبلية.
السطر الافتتاحي #!/bin/bash (المعروف أيضًا باسم shebang) يوجه النظام بشأن المترجم المستخدم لمعالجة الشفرة التالية في البرنامج النصي. هنا، “bash” هو المترجم الذي اخترناه.
3. الآن، دعونا نضع نصنا ‘bash if else’ على الاختبار. قم بتنفيذ الأمر أدناه:
تذكر، بغض النظر عن النسخة من قذيفة باش التي تستخدمها، قم بإضافة اسم النص الخاص بك مسبوقًا بـ ‘bash’. هذا يضمن أن النظام يستخدم باش لتنفيذ النص.
أدخل “ATA” واضغط على Enter. يجب أن يكون الناتج مشابهًا لما يلي:

إذا قمت بإدخال أي شيء آخر بخلاف “ATA”، فلن يظهر رسالة الترحيب في الناتج. سيتم عرض الوقت والتاريخ الحالي فقط. يعود هذا السلوك إلى البيان ‘bash if else’ الذي يتحقق من مطابقة دقيقة مع قيمة في المتغير $NAME.
يرجى ملاحظة أن بيانات ‘bash if else’ حساسة لحالة الأحرف. لذلك، “ata”، “aTa”، “Ata”، وهكذا، يعتبرون مختلفين عن “ATA”.

قم بتجربة نصوصك المتتابعة ‘bash if else’ باستخدام مدخلات متنوعة باستمرار. هذا يضمن أن النصوص تعمل كما هو متوقع.
التنقيب في العمق: بيانات ‘bash if else’ متداخلة
لقد فهمت بالفعل أساسيات صياغة بيانات ‘bash if else’. في حين أن هذه المعرفة الأساسية تكفي للمهام البسيطة، فإن النصوص المعقدة غالبًا ما تتطلب بناءات متقدمة. هنا تأتي بيانات ‘bash if else’ المتداخلة إلى اللعب. أساساً، إنه بيان ‘if’ يحتوي على بيان ‘if’ أو أكثر إضافيًا.
الهيكل أدناه يوضح الصيغة الأساسية لبيانات ‘bash if else’ المتداخلة. هنا، تحتوي عبارة if [[ شروط ]]
الخارجية على الرمز القابل للتنفيذ فقط عند تحقيق الشرط. في سياقنا، الرمز المتداخل هو بيان ‘if’ آخر.
إذا [[ الشروط ]]
– يُمثل هذا البيان الخارجي ‘bash if else’. يتم تنفيذ الشيفرة المدمجة (بيان ‘if’ آخر) فقط إذا كانت الشروط المحددة صحيحة.إذا [[ الشرط2 ]]
– يُمثل هذا الجزء الداخلي ‘bash if else’. يحتوي على الشيفرة التي يتم تنفيذها إذا وفقًا للشروط يتم الوفاء بها.
لنتناول أمورًا أعمق. سنقوم الآن بتحسين مثالنا السابق على ‘bash if else’، سنضيف الآن بيان ‘if’ يستفسر عن كلمة مرور:
1. أولاً، قم بإنشاء ملف جديد بعنوان bash_nested_if_demo.sh باستخدام محرر النص المفضل لديك.
2. قم بنقل شيفرة ‘bash if else’ المقدمة أدناه إلى ملف bash_nested_if_demo.sh، احفظ التغييرات الخاصة بك، وأغلق المحرر.
يُطلب من شيفرة ‘bash if else’ هذه إدخال اسم وكلمة مرور. إذا تم تحقيق الشروط للاسم والكلمة المرور، يتم عرض رسالة معينة. إذا لم يكن هناك تطابق، يتم عرض الإخراج بتاريخ ووقت الحالي.
3. الآن، دعنا نرى هذا النص “bash if else” في العمل. قم بتشغيل الأمر أدناه:
للحصول على نتائج مثالية، أدخل ATA كاسم مستخدم و pwd123 ككلمة مرور.

إذا اختلفت مدخلاتك عن “ATA” أو “pwd123″، ستتلقى فقط ردود فعل تتعلق بالتاريخ والوقت الحاليين. هذا لأن بنية ‘bash if else’ تتطلب تحقيق كل من الشروط.

فك تشفير بيانات “Bash If Else”
تعتبر عبارات “bash if else” ركائز في البرمجة بلغة Bash، حيث توفر قدرات حاسمة لنصوصك. ومع ذلك، من الأساسي فهم أن استخدام تعليمات “if” ليس بدون عيوب.
التحدي الواضح هو أن الاعتماد الزائد على “if” يمكن أن يجعل من الصعب فهم وتحرير الشيفرة الخاصة بك، مما يجعلها مملة وصعبة، خاصة عندما يتعلق الأمر بتضمين العديد من البيانات المتداخلة. يمكن أن تتسبب هذه النصوص في أن تصبح شيفرات “السباغيتي”، والتي تتميز بتقليل القابلية للقراءة وزيادة التعقيد.
إذاً، كيف يمكنك تبسيط شيفرتك في “bash if else” لتظل مفهومة؟ اختر البيانات “if else” بدلاً من الكثير من الشروط المتداخلة. الكلمة “else” توفر سهولة تحديد مجموعة بيانات تُنفذ إذا لم يتم تحقيق شرط “if”.
لفهم أكثر، اعتبر بناء عبارة “Bash If Else” التالية، حيث:
if [[ conditions ]]
– هنا، تتضمن بيانات “bash if else” الشيفرة (بيان1
) التي تنشط فقط عندما يكون الشرط المحدد صحيحًا.else
– هذا جزء من هيكل “bash if else”. بيانelse
يشمل الشيفرة (بيان2
) التي تُنفذ عندما لا يتم تحقيق الشرط في البندif
السابق.
تخيل إنشاء لعبة بسيطة في “bash if else” حيث يتوقع النظام رقمًا عشوائيًا من المستخدم:
1. ابدأ بإنشاء ملف جديد بالاسم bash_if_else_demo.sh.
2. دمج الشيفرة التالية لـ “bash if else” في ملف bash_if_else_demo.sh الخاص بك، احفظ التعديلات، ثم اخرج.
الشيفرة الأساسية لـ “bash if else” تطلب من المستخدم إدخال رقمهم الحظ. إذا كان الرقم زوجيًا، يعرض رسالة “لقد فزت!”، وعلى العكس، يؤدي رقم فردي إلى إخراج “لقد خسرت!”.
3. لرؤية نص الأمر ‘bash if else’ في العمل، قم بتشغيل الأمر التالي:
عند إدخال رقم زوجي، يجب أن ترى رسالة “لقد ربحت بـ ‘bash if else’!” على الشاشة. بالعكس، يجب أن يؤدي إدخال رقم فردي إلى رسالة “لقد خسرت باستخدام ‘bash if else’!”

لتحسين نص ‘bash if else’، افكر في دمج قسم يحدد ما إذا كان المستخدم يدخل حرفًا أو حرفًا مميزًا بدلاً من رقم.
فك شيفرة ‘Bash If Else’ وبيانات الحالة
حتى الآن، لقد استكشفت طريقتين لاتخاذ قرارات في سكربتاتك باستخدام Bash، وهي بيانات ‘bash if else’. ولكن Bash يقدم طريقة أخرى لاتخاذ القرار – بيانات case
.
مماثلة لـ ‘bash if else’، تعتبر بيانات case
عبارة عن تسلسلات تعليمات متقدمة يتم تنفيذها استنادًا إلى شروط محددة. الميزة الملحوظة مع بيانات الحالة هي وضوحها وإيجازها، خاصة عند مقارنتها بسيناريوهات ‘bash if else’ المتداخلة.
لفهم البديل ‘bash if else’ بشكل كامل، دعونا نتناول بناء الجملة:
case $VAR in
– يقوم هذا الجزء من البناء بتقييم المتغير$VAR
مقابل أنماط محددة حتى يظهر تطابق.pattern1)
وpattern2)
– هذه هي المعايير التي يتم اختبارها، وبمجرد اكتشاف تطابق، يتم تنفيذ الشيفرة المقابلة (statement1
أوstatement2
).esac
– يختتم هذا البناء الحالة.
تخيل أنك تقوم بتصميم نص ‘bash if else’ حيث يقوم المستخدمون بإدخال أسماء بلدانهم، وفي الرد، يعرض النص اللغة الرئيسية في تلك البلدان.
1. ابدأ بإنشاء ملف باسم bash_case_demo.sh.
2. دمج شيفرة ‘bash if else’ المقدمة أدناه في ملف bash_case_demo.sh الخاص بك، ثم احفظ واخرج.
سيقوم النص ‘bash if else’ الناتج بطلب من المستخدم إدخال اسم بلدهم و، بناءً على أنماط ‘case’، سيقوم بطباعة اللغة الرئيسية المتحدثة في البلد المذكور.
3. لتجربة هذا النص ‘bash if else’ مباشرة، استخدم الأمر التالي:
ستلاحظ أن النص يبرز بدقة اللغة وفقًا لبلد المستخدم المختار.
إذا لم يتطابق البلد المقدم مع الأنماط المحددة، يتم تنشيط النمط الافتراضي (*)، مما يؤدي إلى الناتج “غير معروف”.

ختامًا لبيانات التوجيه الشرطية في باش
في هذا الدليل، ستشرع في رحلة فهم ‘bash if else’ وبيانات التوجيه الشرطية الأخرى في باش. من البيانات البسيطة ‘if’ إلى البيانات المعقدة ‘if-else’ و ‘case’، أنت الآن مجهز بأدوات أساسية لكتابة سيناريوهات باش فعالة.
بهذه الأسس الأساسية لـ ‘bash if else’ في متناول يديك، يمكنك بناء سيناريوهات باش بشكل أكثر كفاءة، مما يقلل من الأخطاء.
لكن تذكر، هذا مجرد قمة الجبل الجليدي. يقدم Bash مجموعة واسعة من البيانات الشرطية. ربما، اعتبر الغوص في بيان elif في Bash و عمليات && و || للحصول على رؤى أعمق. مع الإخلاص، ستكون إتقان نصوص Bash في متناول اليد قريبًا!