مثال Bash If-Then-Else

Bash If Then Else Example



في هذا الدرس ، سنرى كيف يمكننا استخدام عبارات If-Then-Else في البرامج النصية لبيئة Bash التي نكتبها. تعد عبارات If-Then-Else أداة مفيدة لتوفير طريقة لتحديد مسار عمل البرنامج النصي عند استيفاء بعض الشروط. دعونا نرى ما هو بناء الجملة لعبارات If-Then-Else:

لوبعض الأوامر
من ثمثم الأوامر ؛
آخرأوامر أخرى ؛
يكون

في الأمر الموضح أعلاه ، إذا تم العثور على SOME-COMMANDS ليكون صحيحًا أو تم العثور على حالة الإرجاع الخاصة به على أنها 0 ، فسيتم تنفيذ THEN-COMMANDS. إذا لم يكن الأمر كذلك ، فسيتم تنفيذ ELSE-COMMANDS. في SOME-COMMANDS ، نقوم عادةً ببعض مقارنة السلاسل أو مقارنة القيمة في شكل أعداد صحيحة. يمكننا أيضًا إجراء الكثير من العمليات التي تتضمن الملفات. دعونا نلقي نظرة على بعض الأمثلة على الأوامر الأساسية التي يتم استخدامها بشكل أساسي عند العمل مع الشروط المستندة إلى الملفات:







ابتدائي المعنى
[ -إلى ] إرجاع صحيح عند وجود FILE.
[-ب] يعود صحيحًا عندما يكون FILE موجودًا & هو ملف كتلة خاص.
[-c] يعود صحيحًا عندما يكون FILE موجودًا & هو ملف خاص بحرف.
[ -د ] يعود صحيحًا عندما يكون FILE موجودًا & يكون دليلًا.
[ -و ] إرجاع صحيح عند وجود FILE.
[ -F ] يعود صحيحًا عندما يكون FILE موجودًا & يكون ملفًا عاديًا.
[-g] يعود صحيحًا عند وجود FILE وتعيين بت SGID الخاص به.
[-h] إرجاع صحيح عند وجود FILE & ارتباط رمزي.
[-ك] يعود صحيحًا عند وجود الملف FILE وتعيين البت اللاصق الخاص به.
[-p] إرجاع صحيح عند وجود FILE & هو أنبوب مسمى (FIFO).
[-r] يعود صحيحًا عندما يكون الملف موجودًا ويكون قابلاً للقراءة.
[ -س ] إرجاع صحيح عند وجود FILE وحجمه أكبر من الصفر.
[-t] يعود صحيحًا عندما يكون واصف الملف FD ​​مفتوحًا ويشير إلى محطة طرفية.
[-u] يعود صحيحًا عند وجود FILE وتعيين بت SUID (معرف المستخدم المحدد).
[ -في ] يعود صحيحًا عندما يكون الملف FILE موجودًا ويكون قابلاً للكتابة.
[-x] إرجاع صحيح عندما يكون الملف موجوداً & يكون قابلاً للتنفيذ.
[-O] يعود صحيحًا عند وجود FILE وامتلاكه لمعرف المستخدم الفعال.
[-G] إرجاع صحيح عند وجود FILE وامتلاكه لمعرف المجموعة الفعال.
[ -ال ] إرجاع صحيح عند وجود FILE & ارتباط رمزي.
[ -ن ] إرجاع صحيح عند وجود FILE & تم تعديله منذ آخر قراءة.
[ -س ] يعود صحيحًا عندما يكون الملف موجودًا ومقبسًا.

يمكن أن تكون أوامر THEN-COMMANDS و ELSE-COMMANDS أي عمليات UNIX صالحة أو أي برنامج قابل للتنفيذ. نلاحظ أن من ثم و يكون الأوامر مفصولة بفاصلة منقوطة لأنها تعتبر عناصر منفصلة تمامًا عن البرنامج النصي.



مثال بسيط If-Then-Else

لنبدأ الدرس بمثال بسيط للغاية بعبارات If-Then-Else.
هنا نموذج لبرنامج:



إذا كان المثال

إذا كان المثال





هذا هو الإخراج الذي نراه عند تشغيل البرنامج النصي الخاص بنا:

$. ifelse1.sh
القيم هي نفسها!
$

استخدام وسيطات سطر الأوامر

يمكننا أيضًا استخدام وسيطات سطر الأوامر في البرامج النصية الخاصة بنا واستخدام عدد الوسائط والقيم نفسها كشرط في عبارة IF التي نحددها. نحدد أولاً ملفًا نصيًا بالمحتوى التالي:



اسمي LinuxHint. أنا أحب الخوادم ، وخاصة خوادم Ubuntu. هم كذلك
نهائية!

الآن ، يمكننا كتابة نص برمجي يكتشف ما إذا كانت الكلمة موجودة في ملف نصي أم لا. دعونا نحدد النص الآن:

رما - طرد - قذف 'العثور على 1 دولار في 2 دولار'
سيطرة 1 دولار 2 دولار
لو [ -ولد 0 ]
من ثم
رما - طرد - قذف لم يتم العثور على '$ 1 في الملف $ 2.'
آخر
رما - طرد - قذف تم العثور على '$ 1 في الملف $ 2.'
يكون
رما - طرد - قذف 'اكتمل البرنامج النصي.'

هذا السيناريو ديناميكي للغاية. فهو يعتبر كلمة البحث والملف المراد البحث عنه من سطر الأوامر نفسه. الآن ، نحن جاهزون لتشغيل البرنامج النصي الخاص بنا:

. ifelse2.sh الحب hello.txt

سنرى ناتجًا مثل:

إيجاد الحبفيhello.txt
وجد الحبفي ملفhello.txt.
اكتمل البرنامج النصي.

التحقق من عدد وسيطات سطر الأوامر

داخل جملة IF ، يمكننا حتى التحقق من عدد وسيطات سطر الأوامر التي تم تمريرها إلى الأمر حتى نتمكن من التصرف بناءً على الأمر نفسه:

عدد=# دولار
لو [ ! عدد الدولارات -Gt 1 ]
من ثم
رما - طرد - قذف 'حجج غير كافية'
آخر
رما - طرد - قذف 'أحسنت!'
يكون

لنقم بتشغيل هذا النص البرمجي الآن ، سنرى الناتج التالي:

وسائط سطر الأوامر

وسائط سطر الأوامر

عبارات If-Then-Elif-Else

يمكن أن يكون لدينا أيضًا العديد من عبارات IF في نفس الكتلة لتضييق مسار القرار الذي يتخذه برنامجنا لتنفيذ الأوامر التي حددناها. فيما يلي بناء الجملة لتحديد عبارات IF المتعددة في نصوصنا البرمجية:

لوأوامر الاختبار ؛
من ثم
أوامر النتائج ؛
أليف
أوامر أخرى
من ثم
أوامر نتيجة أخرى ؛
آخر
أوامر بديلة ؛
يكون

هذا يبدو مألوفًا جدًا ويسهل متابعته أيضًا. دعونا نحدد مثالًا بسيطًا لتحديد كيفية عمل الشجرة:

عدد=# دولار
لو [ عدد الدولارات -مكافئ 1 ]
من ثم
رما - طرد - قذف 'تم العثور على حجة واحدة فقط.'
أليف [ عدد الدولارات -مكافئ 2 ]
من ثم
رما - طرد - قذف 'الأفضل ، تم العثور على حجتين.'
آخر
رما - طرد - قذف 'عمل جيد ، تم العثور على العديد من الحجج!'
يكون

إليكم ما نعود إليه بهذا الأمر:

إذا كان ذلك مثال Elif Else

إذا كان ذلك مثال Elif Else

استخدام بيانات الحالة

تكون عبارات IF-ELSE مفيدة عندما يكون لديك قائمة كبيرة من الخيارات التي تحتاج إلى اتخاذ قرار بشأنها. ولكن في حالة رغبتك في تنفيذ إجراء فقط في حالات قليلة من المطابقة التامة للنتيجة ، يمكننا أيضًا استخدام عبارات CASE في نصوص Bash النصية. يبدو تركيبها كما يلي:

قضيةالتعبيرفيحالة 1)أوامر للتنفيذ ؛
CASE2)أوامر للتنفيذ ؛
CASE2)أوامر للتنفيذ ؛
...)أوامر للتنفيذ ؛
*)أوامر للتنفيذ ؛
esac

الحالة الأخيرة مع * تعمل كحالة افتراضية وسيتم تنفيذها عندما لا يتم العثور على أي من الحالات المحددة أعلاه متطابقة.

دعنا نبني بسرعة مثالًا بسيطًا باستخدام عبارات CASE:

قضية '1 دولار' في
1)
رما - طرد - قذف 'القيمة 1.'
؛؛
2)
رما - طرد - قذف 'القيمة 2.'
؛؛
3)
رما - طرد - قذف 'القيمة 3.'
؛؛
*)
رما - طرد - قذف 'تم تمرير قيمة أخرى'.
esac

تم إنهاء كل جملة CASE بواسطة ؛؛ (علامات منقوطة مزدوجة). إليكم ما نعود إليه بهذا الأمر:

مثال CASE

مثال CASE

استنتاج

في هذا الدرس ، نظرنا في كيفية استخدام عبارات IF-ELSE و IF-THEN-ELIF و CASE في نصوص Bash التي نحددها لاتخاذ إجراءات محددة على أساس القيم الموجودة في برامجنا أو التي تم تمريرها من قبل المستخدم باستخدام الموضعية العوامل.