Skip to main content

دليل المبتدئين إلى BASH - مقارنة الأشياء

Supersection 1, More Comfortable (أبريل 2025)

Supersection 1, More Comfortable (أبريل 2025)
Anonim
01 من 08

دليل المبتدئين إلى BASH - مقارنة الأشياء

في الجزء السابق من البرنامج التعليمي BASH نظرنا في البيانات الشرطية.

كان هذا الدليل طويلاً جدًا ولكنه أظهر فقط كيفية التحكم في تدفق المنطق. يوضح هذا الدليل الطرق المختلفة التي يمكنك من خلالها مقارنة المتغيرات.

توضح الصورة الموضحة أعلاه المثال الأول في دليل هذا الأسبوع:

#! / بن / سحقNAME1 = "غاري"NAME2 = "بوب"if "$ name1" = "$ name2"ثم صدى "تطابق الأسماء"آخر صدى "الأسماء لا تتطابق"فاي

في البرنامج النصي أعلاه قمت بتعريف اثنين من المتغيرات يسمى name1 و name2 وقمنا بتعيينهما القيم "gary" و "bob". بما أن المتغيرات متضمنة بين علامات الاقتباس ، فإنها تسمى متغيرات السلسلة التي تصبح أكثر أهمية كلما استمر البرنامج التعليمي.

لا يقوم البرنامج النصي بأكمله بمقارنة قيمة $ name1 و $ name2 وإذا كانا يطابقان إخراج السلسلة "تطابق الأسماء" وإذا لم يخرجوا السلسلة "فإن الأسماء غير متطابقة".

تعتبر علامات الاقتباس حول المتغيرات $ name1 و $ name2 مهمة لأنه إذا لم يتم تعيين قيمة أي منهما ، فسيظل البرنامج النصي يعمل.

على سبيل المثال ، إذا لم يتم تعيين $ name1 ، فستقارن "" بـ "bob". بدون علامات الاقتباس سيتم تركك مع = "bob" الذي يفشل بشكل واضح.

يمكنك أيضًا استخدام! = الترميز لتعريف لا يساوي كما يلي:

if "$ name1"! = "$ name2" 02 من 08

دليل المبتدئين إلى باش - مقارنة السلاسل

في المثال أعلاه ، يقارن الاختبار نفس السمتين ويطرح السؤال الذي يأتي به gary قبل bob في الأبجدية؟

الاجابة بوضوح هي لا.

يقدم البرنامج النصي أقل من المشغل (<). نظرًا لاستخدام أقل من المشغل أيضًا لإعادة التوجيه ، يجب عليك الفرار منه باستخدام علامة مائلة () حتى تعني أقل مما هو السبب في السيناريو أعلاه مقارنة بـ "$ name1" <"$ name2".

عكس أقل من الواضح هو أكبر من. بدلاً من استخدام <use >.

فمثلا

if "$ name1" > "$ name2" 03 من 08

دليل المبتدئين إلى باش - مقارنة السلاسل

إذا كنت ترغب في اختبار ما إذا كان للمتغير قيمة ، فيمكنك استخدام الاختبار التالي:

إذا كان -n $ name2

في البرنامج النصي أعلاه لقد اختبرت ما إذا كان $ name2 قد أعطيت قيمة وما لم تكن الرسالة "لا يوجد bob ، لم يكن هناك أبداً".

04 من 08

دليل المبتدئين إلى باش - مقارنة السلاسل

في الشريحة السابقة قمنا بتغطية ما إذا كان قد تم تعيين متغير أم لا. في بعض الأحيان قد يكون تم تعيين متغير ولكن في بعض الأحيان قد لا يكون لها قيمة.

على سبيل المثال:

name1 = ""

لاختبار ما إذا كان المتغير له قيمة أم لا (أي له طول صفري) استخدم -z كما يلي:

إذا كان -z $ name1

في البرنامج النصي أعلاه قمت بتعيين $ name1 إلى سلسلة طول صفري ثم مقارنتها باستخدام --z. إذا كانت قيمة $ name1 صفرية ، فسيتم عرض الرسالة "gary has out out the the evening".

05 من 08

دليل المبتدئين إلى BASH - مقارنة الأرقام

حتى الآن جميع المقارنات كانت للسلاسل. ماذا عن مقارنة الارقام؟

يعرض النص أعلاه مثالاً لمقارنة رقمين:

#! / بن / سحقو= 4ب = 5إذا كان $ a = $ bثم صدى "4 = 5"آخر صدى "4 لا يساوي 5"فاي

لتعيين متغير ليكون رقم ببساطة تعيينه دون علامات اقتباس. يمكنك بعد ذلك مقارنة الأرقام مع علامة يساوي.

لكنني أفضل استخدام المشغل التالي لمقارنة رقمين:

إذا كان $ a -e $ $ b 06 من 08

دليل المبتدئين إلى BASH - مقارنة الأرقام

إذا كنت ترغب في مقارنة ما إذا كان الرقم أقل من رقم آخر ، فيمكنك استخدام أقل من عامل التشغيل (<). كما هو الحال مع السلاسل ، يجب عليك الهروب من أقل من المشغل باستخدام شرطة مائلة. ( <).

هناك طريقة أفضل لمقارنة الأرقام وهي استخدام الترميز التالي بدلاً من ذلك:

  • أقل من -lt
  • أقل من أو يساوي
  • أكبر من -gt
  • أكبر من أو يساوي

فمثلا:

إذا كان $ a -lt $ bإذا كان $ a -le $ bإذا كان $ a -ge $ bإذا كان $ a -gt $ b 07 من 08

دليل المبتدئين إلى BASH - مقارنة الأرقام

أخيرًا لهذا الدليل ، إذا كنت تريد اختبار ما إذا كان رقمين مختلفين ، فيمكنك استخدام إما أقل من أو أكثر من المشغلين معًا (<>) أو - على النحو التالي:

إذا كان $ a <> $ bإذا كان $ a -ne $ b 08 من 08

دليل المبتدئين إلى BASH - مشغلي المقارنة - ملخص

إذا فاتتك الأجزاء الثلاثة الأولى من هذا الدليل ، يمكنك العثور عليها بالنقر فوق الروابط التالية:

  • مرحبا بالعالم
  • معلمات الإدخال
  • الشروط والمتغيرات

في الجزء التالي من الدليل سأقوم بتغطية الحساب.