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

Bash

مقدمة لمطابقة السلسلة في باش

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

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

يأمر وصف
[[ $string == *"$substring"* ]] يختبر ما إذا كانت السلسلة المتغيرة تحتوي على السلسلة الفرعية $substring باستخدام مطابقة النمط.
grep -q الوضع الهادئ في grep، يُرجع 0 إذا تم العثور على سلسلة البحث و1 بخلاف ذلك، دون إنتاج أي مخرجات.
echo "$string" | grep يبحث عن السلسلة الفرعية داخل السلسلة عن طريق توصيل السلسلة إلى grep.
case "$string" in *"$substring"*) يستخدم بيان الحالة لمطابقة النمط للتحقق من وجود السلسلة الفرعية داخل السلسلة.
esac ينهي كتلة بيان الحالة.
;; ينهي كتلة النمط ضمن بيان الحالة.
-q خيار في grep يمنع الإخراج، وهو مفيد للتحقق من التواجد دون عرض التطابقات.

فهم مطابقة السلسلة في باش

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

يستخدم السيناريو الثاني لنفس المهمة. من خلال ترديد والأنابيب إليه ، يمكننا التحقق من وجود $substring بطريقة مختلفة قليلا. ال الخيار يضمن ذلك يعمل في الوضع الهادئ، ويعيد 0 إذا تم العثور على السلسلة الفرعية، دون أي إخراج. هذا البرنامج النصي مفيد عندما تحتاج إلى الاستفادة منه إمكانات البحث عن النص القوية داخل برنامج Bash النصي.

استخدام مطابقة الأنماط وGrep

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

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

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

البرمجة النصية باش

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Check if the substring is present
if [[ $string == *"$substring"* ]]; then
  echo "It's there!"
else
  echo "It's not there!"
fi

استخدام grep للعثور على سلسلة فرعية في Bash

برمجة باش مع grep

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use grep to check for the substring
if echo "$string" | grep -q "$substring"; then
  echo "It's there!"
else
  echo "It's not there!"
fi

استخدام بيان الحالة للتحقق من وجود سلسلة فرعية

برمجة باش مع بيان الحالة

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use a case statement to check for the substring
case "$string" in
  *"$substring"*)
    echo "It's there!"
    ;;
  *)
    echo "It's not there!"
    ;;
esac

تقنيات متقدمة لمطابقة السلسلة في Bash

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

تقنية أخرى مفيدة هي توسيع المعلمة. يوفر Bash عدة أشكال من توسيع المعلمات التي يمكن استخدامها لمعالجة السلاسل واستخراج السلاسل الفرعية. على سبيل المثال، بناء الجملة يستخرج سلسلة فرعية من يبدأ من لاجل منحه length. وبالمثل، النمط يزيل أقصر مباراة من من بداية ، بينما ${string##substring} يزيل أطول مباراة. تعتبر هذه التقنيات مفيدة لمزيد من التحكم الدقيق في معالجة السلسلة داخل البرامج النصية الخاصة بك.

  1. ما هي أبسط طريقة للتحقق من وجود سلسلة فرعية في باش؟
  2. إن أبسط طريقة هي استخدام مطابقة النمط مع بناء الجملة.
  3. كيف يمكنني استخدام للعثور على سلسلة فرعية؟
  4. يمكنك استخدام للتحقق مما إذا موجود في .
  5. ما هو توسيع المعلمة في باش؟
  6. توسيع المعلمة هو أسلوب في Bash لمعالجة السلاسل. على سبيل المثال، يستخرج سلسلة فرعية.
  7. هل يمكنني استخدام التعبيرات العادية في نصوص Bash؟
  8. نعم، يمكنك استخدام التعبيرات العادية مع أدوات مثل لمطابقة الأنماط الموسعة.
  9. ماذا يكون ال بيان تفعل في باش؟
  10. ال تسمح العبارة بمطابقة النمط مع المتغير وتنفيذ الأوامر بناءً على النمط المطابق.
  11. كيف عمل؟
  12. يزيل هذا الشكل من توسيع المعلمة أقصر تطابق من بداية .
  13. ماهو الفرق بين و ؟
  14. يقوم الأول بإزالة أقصر تطابق، بينما يقوم الأخير بإزالة أطول تطابق من بداية .
  15. هل يمكنني التحقق من وجود سلاسل فرعية متعددة في شرط واحد؟
  16. نعم يمكنك استخدام عبارة للتحقق من وجود أنماط متعددة في حالة واحدة.
  17. ما فائدة الخيار في ؟
  18. ال الخيار في يمنع الإخراج ويعيد حالة الخروج فقط، مما يجعله مفيدًا لعمليات التحقق الشرطية.

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