ذكري المظهر

كيفية مقارنة السلاسل في باش

كي لا يخدعك البائع عند شراء تلفزيون SMART TV / أكتشف بنفسك السر الكبير !!

كي لا يخدعك البائع عند شراء تلفزيون SMART TV / أكتشف بنفسك السر الكبير !!

جدول المحتويات:

Anonim

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

يصف هذا البرنامج التعليمي كيفية مقارنة السلاسل في Bash.

عوامل المقارنة

عوامل تشغيل المقارنة هي عوامل تقارن القيم وتعود صواب أو خطأ. عند مقارنة السلاسل في Bash ، يمكنك استخدام العوامل التالية:

  • string1 = string2 و string1 == string2 - إرجاع عامل المساواة صحيحاً إذا كانت المعاملات متساوية.
    • استخدام = المشغل مع test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      عندما يتم تنفيذ البرنامج النصي فإنه سيتم طباعة الإخراج التالي.

      Strings are equal.

      فيما يلي نص آخر يأخذ المدخلات من المستخدم ويقارن السلاسل المعطاة. في هذا المثال ، سوف نستخدم ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      قم بتشغيل البرنامج النصي وأدخل السلاسل عند المطالبة:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      يمكنك أيضًا استخدام المنطقية و && و أو || لمقارنة السلاسل:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      تحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية

      هناك عدة طرق للتحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية.

      تتمثل إحدى الطرق في استخدام تحيط السلسلة الفرعية برموز النجمة * مما يعني مطابقة جميع الأحرف.

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      سوف يردد النص ما يلي:

      It's there.

      خيار آخر هو استخدام عامل التشغيل regex =~ كما هو موضح أدناه:

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      الفترة التي تليها علامة النجمة .* تطابق الصفر أو أكثر وتحدث أي حرف باستثناء حرف السطر الجديد.

      تحقق مما إذا كانت السلسلة فارغة

      غالبًا ما ستحتاج أيضًا إلى التحقق مما إذا كان المتغير عبارة عن سلسلة فارغة أم لا. يمكنك القيام بذلك باستخدام مشغلي -n و -z .

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      مقارنة السلاسل مع مشغل الحالة

      بدلاً من استخدام عوامل تشغيل الاختبار ، يمكنك أيضًا استخدام بيان الحالة لمقارنة السلاسل:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      مقارنة معجمية

      مقارنة المعجم هي عملية تتم فيها مقارنة سلسلتين أبجديًا عن طريق مقارنة الأحرف في سلسلة بالتتابع من اليسار إلى اليمين. نادرا ما يستخدم هذا النوع من المقارنة.

      تقارن البرامج النصية التالية سلسلتين معجميا:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      سينتج البرنامج النصي ما يلي:

      Ubuntu is lexicographically greater than Linuxize.

      استنتاج

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

      محطة باش