مثل العديد من لغات البرمجة الأخرى، تحتوي PowerShell على مشغلات مقارنة متنوعة. ومع ذلك، على عكس اللغات الأخرى، يمكن أن تبدو تلك المشغلات القارنة غريبة قليلاً. بدلاً من `==
`, لديك `eq
`. بدلاً من `<>
`, لديك `ne
`. يمكن أن يكون ذلك مربكًا للمبتدئين. دعونا نتعرف على مشغل الإعجاب في PowerShell وغيرها من مشغلات المقارنة في هذا المقال.
اختبار المساواة باستخدام مشغلات eq
و ceq
يتم فحص ما إذا كانت إحدى الكائنات متساوية لكائن آخر في PowerShell باستخدام مشغل eq
. يقارن مشغل eq
بين كائنات بسيطة من العديد من الأنواع مثل السلاسل والقيم البولية والأعداد وما إلى ذلك. عند الاستخدام، سيقوم مشغل eq
بإرجاع قيمة بوليانية True
أو False
اعتمادًا على النتيجة.
يحتاج مشغل -eq
إلى قيمتين للمقارنة. لنقل أنك قد قمت بتعيين سلسلة إلى متغير يسمى $string
. ترغب في مقارنة قيمة هذا المتغير بقيمة السلسلة "PowerShell"
للتأكد من أنهما متساويين.
في المثال التالي، يمكنك رؤية أننا نعين قيمة PowerShell
إلى المتغير $string
. ثم، باستخدام مشغل eq
، يقوم المثال بمقارنة قيمة $string
مع السلسلة powershell
. سهل بما فيه الكفاية، أليس كذلك؟ ولكن انتظر، فهما ليستا حقاً نفس الشيء.
لاحظ أن
=
هو مشغل تعيين وليس مشغل مقارنة. لا يمكنك استخدام=
لمقارنة قيمة مع قيمة أخرى في PowerShell.
اختبار الحساسية لحالة الأحرف باستخدام مشغل ceq
في المثال أعلاه، لاحظ كيف عاد مشغل eq
بقيمة منطقية True
حتى عندما لم تكن السلسلة مطابقة تماماً. يحدث هذا السلوك لأن مشغل eq
غير حساس لحالة الأحرف. لاختبار المساواة التي تهتم بحساسية حالة الأحرف، استخدم مشغل ceq
. مشغل ceq
هو نفس مشغل eq
باستثناء أنه يهتم بحساسية حالة الأحرف.
يمكنك رؤية مثال على استخدام ceq
في كود القطعة التالي. الآن لاحظ كيف يرى PowerShell الفارق بحساسية حالة الأحرف.
اختبار عدم المساواة باستخدام مشغلي ne
و cne
تماماً كما تختبر eq
و ceq
المساواة، يحتوي PowerShell على زوج من المشغلين الذين يقومون بالعكس تماماً يسمون ne
و cne
. مثل نظرائهما، يقوم هذان المشغلان بنفس العملية لكن بشكل معاكس.
اختبار العناصر في مجموعة
عادةً ما يتم استخدام مشغلات eq
و ceq
للقيم الحسابية أو الفردية مثل السلاسل النصية والأعداد الصحيحة والقيم البولية. ولكن يمكن أيضًا لهذه المشغلات العثور على حالات لقيم معينة تحتوي على مجموعة مثل مصفوفة.
لاحظ في المثال أدناه أننا نقوم بإنشاء مصفوفة تحتوي على 12 عددًا صحيحًا. ربما ترغب في العثور على جميع الحالات في تلك المصفوفة التي تساوي الرقم 9. لا مشكلة، استخدم المشغل eq
ضد المصفوفة لإرجاع جميع الحالات للعدد المقارن.
اختبار تواجد القيم في المجموعات
نظرًا لأنك للتو تعلمت استخدام المشغل eq
للعثور على الحالات في المصفوفات، دعنا نأخذ ذلك خطوة إلى الأمام ونقدم لك المشغلات “تواجد القيم”. هذه المشغلات هي contains
، notcontains
، in
و notin
. تعيد هذه المشغلات قيمة بولية True
أو False
إذا كانت المجموعة تحتوي على الحالة أم لا.
تحقق من المثال التالي. في هذا المثال، نقوم بإنشاء مصفوفة تحتوي على تسعة أعداد صحيحة. إذا كنت ترغب في إجابة نعم/لا بسيطة على ما إذا كانت تلك المصفوفة تحتوي على عدد معين، يمكنك الحصول على ذلك باستخدام contains
أو notcontains
.
بالمثل، لديك مشغلات in
و notin
. هذه المشغلات متطابقة تقريبًا مع contains
و notcontains
باستثناء واحد: القيمة المقارنة على اليسار بدلاً من اليمين.
اختبار “أكبر من” باستخدام مشغلات gt
و ge
ماذا يحدث إذا كنت بحاجة إلى اختبار ما إذا كان الرقم (عدد صحيح) أكبر من رقم آخر أو ربما أكبر من أو يساوي رقمًا آخر؟ ستستخدم المشغلات `gt` و `ge`. تقارن هذه المشغلات بين الأعداد الصحيحة.
مثل المشغلات الأخرى، تعيد هذه المشغلات قيم بولية `True` أو `False` اعتمادًا على ما إذا كان أحد الأعداد الصحيحة أكبر من الآخر. تقوم كلتا هذه المشغلات ب اختبار ما إذا كانت العدد الصحيح على اليسار أكبر من أو يساوي العدد الصحيح على اليمين.
في المثال أدناه، يمكنك رؤية كيفية سلوك كل من هذه المشغلات.
مماثل للمشغل `eq` الذي يسمح لك بالعثور على الحالات في المجموعات، يمكنك القيام بالشيء نفسه باستخدام المشغلات `ge` و `gt`. يبحث PowerShell من خلال كل عنصر في المجموعة ويقارن كل قيمة بالتي قدمتها. يمكنك رؤية مثال رائع على ذلك أدناه.
اختبار “أقل من” باستخدام المشغلات `lt` و `le`
مماثل للمشغلات `gt` و `ge`، تقوم المشغلات `lt` و `le` بأداء نفس الوظيفة ولكن بشكل معاكس. تقوم المشغلات `lt` و `le` بمقارنة قيمتين لاختبار ما إذا كان العدد الصحيح على الجانب الأيسر أصغر من أو يساوي العدد الصحيح على اليمين.
يمكنك رؤية في المثال أدناه، تطبيق نفس الوظيفة لمقارنة كل قيمة في مجموعة بالطريقة نفسها كما في المشغلات `gt` و `ge`.
التطابق استنادًا إلى البطاقات البرمجية مع مشغل PowerShell Like
حتى الآن، لقد تعلمت كيفية إجراء مطابقات 1:1. جميع العمليات التي تم استخدامها حتى الآن قارنت قيمة كاملة مع قيمة أخرى، ولكن PowerShell لديها خدعة أخرى في أكمامها. يمكنك أيضًا مقارنة القيم باستخدام الرموز البارزة أو النجوم الصغيرة.
لنقل أنك تعرف فقط بعض الأحرف من سلسلة. لا يمكنك استخدام eq
لأن eq
يتطلب منك معرفة السلسلة بأكملها. باستخدام مشغل PowerShell مثل، لا يجب عليك معرفة السلسلة بأكملها. لاختبار ما إذا كانت القيمة مثل أخرى، يمكنك استبدال الجزء الذي لا تعرفه بواسطة الرمز البارز.
كما هو الحال مع العمليات الأخرى، يمكن تطبيق هذه الوظيفة على المجموعات أيضًا.
يمكنك رؤية مثال على مشغل PowerShell مثل وأخي الحساس للحالة، clike
، فيما يلي.
يعيد المشغل -notlike
قيمة منطقية True
إذا لم يتم العثور على أي تطابق وFalse
إذا كان هناك تطابق. في حالة الاستخدام ضد مجموعة، سيعيد جميع القيم الأخرى التي لا تتطابق مع النمط المعطى على الجانب الأيمن لمشغل -notlike
. إضافة الحساسية للحالة إلى النمط، استخدم مشغل -cnotlike
.
المطابقة بناءً على التعبير العادي
المشغل المماثل لـ PowerShell وأقاربه مفيدين، ولكن حينما تحتاج إلى تطابق أكثر تعقيدًا، يمكنك الغوص في عالم تعبيرات الاستطاب (regex) العميق والمظلم. باستخدام المشغلات match
و notmatch
، يمكنك إجراء تطابق نصي معقد للغاية باستخدام regex.
على غرار المشغل المماثل لـ PowerShell، تقوم المشغلات match
ونظيرها المعاكس notmatch
بمقارنة سلسلتين وإرجاع قيمة منطقية True
أو False
. وكذلك، يمكن تطبيق نفس السلوك للمجموعة كما يظهر في المثال أدناه.
الملخص
في هذا المقال، تعرفت على المشغل المماثل لـ PowerShell والعديد من المشغلات الأخرى وكيفية استخدام كل مشغل لقيم فردية ومجموعات. رأيت كيف تختلف النتائج استنادًا إلى المشغل وسواء كانت القيمة فردية أم مجموعة.
بالإضافة إلى ذلك، رأيت أيضًا المشغلات ذات الحساسية لحالة الأحرف، ومشغلات التطابق وكيفية التطابق استنادًا إلى تعبيرات الاستطاب أو البطاقة البريدية، ومشغلات الاحتواء لاختبار ما إذا كان الكائن يحتوي على قيمة معينة أو ما إذا كانت القيمة موجودة في كائن محدد.
