كيفية مقارنة السلاسل في Bash

How Compare Strings Bash



لأغراض البرمجة المختلفة ، نحتاج إلى مقارنة قيمة سلسلتين. تُستخدم الوظائف المضمنة في العديد من لغات البرمجة لاختبار المساواة بين سلسلتين. يمكنك التحقق من المساواة وعدم المساواة بين سلسلتين في bash باستخدام لو بيان. == يستخدم للتحقق من المساواة و ! = يستخدم للتحقق من عدم المساواة في السلاسل. يمكنك مقارنة قيم سلسلتين جزئيًا أيضًا في bash. يتم عرض كيفية مقارنة قيم السلسلة في bash باستخدام أمثلة مختلفة في هذا البرنامج التعليمي.

مثال 1: مقارنة السلسلة باستخدام == عوامل

لا توجد وظيفة مقارنة مضمنة للتحقق من المساواة بين قيمتي سلسلة في bash مثل لغة البرمجة القياسية الأخرى. في البرنامج النصي التالي ، متغيرا سلسلة ، strval1 و سترفال 2 أعلن. يتم اختبار حقوق ملكية هذين المتغيرين باستخدام المتغير الأول لو بيان النص. قيمة ال strval1 مقارنة بقيمة سلسلة للتحقق من المساواة في الثانية لو بيان.







#!/bin/bash

strval1='أوبونتو'
سترفال 2='شبابيك'

#Check المساواة اثنين من متغيرات السلسلة

لو [ $ strval1==$ strval2 ]؛من ثم
رما - طرد - قذف 'الجمل متساوية'
آخر
رما - طرد - قذف 'الجمل ليست متساوية'
يكون

#Check مساواة متغير بقيمة سلسلة

لو [ $ strval1=='أوبونتو' ]؛من ثم
رما - طرد - قذف 'نظام تشغيل Linux'
آخر
رما - طرد - قذف 'نظام تشغيل Windows'
يكون

انتاج:



المقارنة الأولى ليست متساوية والمقارنة الثانية متساوية.







مثال 2: مقارنة السلسلة باستخدام! = عامل التشغيل

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

#!/bin/bash

strval1='أوبونتو'
سترفال 2='شبابيك'

#Check عدم المساواة في متغير بقيمة سلسلة

لو [ $ strval2 !='أوبونتو' ]؛من ثم
رما - طرد - قذف 'نظام تشغيل Windows'
آخر
رما - طرد - قذف 'نظام تشغيل Linux'
يكون

انتاج:



مثال 3: مقارنة سلسلة جزئية

يمكنك مقارنة القيمة الجزئية باستخدام حرف البدل في البرنامج النصي bash. في النص التالي ، * يُستخدم كحرف بدل للمطابقة الجزئية. متغير السلسلة ، سترفال يحتوي على الكلمة إنترنت. لذا ، فإن الأول لو من البرنامج النصي سيعود صحيحًا ويطبع تطابق جزئي . Bash حساس لحالة الأحرف. لهذا ، الثانية لو من البرنامج النصي سيعود خطأ لاستخدام الإنترنت كسلسلة جزئية لا تساوي المقارنة من حيث الحرف.

#!/bin/bash

سترفال='متصفح الانترنت الخاص بمايكروسفت'

لو [[ سترفال $==*إنترنت* ]]؛
من ثم
رما - طرد - قذف 'تطابق جزئي'
آخر
رما - طرد - قذف 'لا تطابق'
يكون

لو [[ سترفال $==*إنترنت* ]]؛
من ثم
رما - طرد - قذف 'تطابق جزئي'
آخر
رما - طرد - قذف 'لا تطابق'
يكون

انتاج:

مثال 4: قارن السلسلة بقيمة إدخال المستخدم

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

#!/bin/bash

رما - طرد - قذف 'أدخل أسمك'
اقرأإدخال

لو [ الإدخال $ !='فهميدا' ]؛
من ثم
رما - طرد - قذف 'لا يوجد سجلات'
آخر
رما - طرد - قذف 'تم العثور على السجل'
يكون

انتاج:

فيديو هذا الدرس موجود هنا:

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