عامل PowerShell مشابه وأكثر: قم بتعزيز لعبة البرمجة الخاصة بك

مثل العديد من لغات البرمجة الأخرى، تحتوي PowerShell على مشغلات مقارنة متنوعة. ومع ذلك، على عكس اللغات الأخرى، يمكن أن تبدو تلك المشغلات القارنة غريبة قليلاً. بدلاً من `==`, لديك `eq`. بدلاً من `<>`, لديك `ne`. يمكن أن يكون ذلك مربكًا للمبتدئين. دعونا نتعرف على مشغل الإعجاب في PowerShell وغيرها من مشغلات المقارنة في هذا المقال.

اختبار المساواة باستخدام مشغلات eq و ceq

يتم فحص ما إذا كانت إحدى الكائنات متساوية لكائن آخر في PowerShell باستخدام مشغل eq. يقارن مشغل eq بين كائنات بسيطة من العديد من الأنواع مثل السلاسل والقيم البولية والأعداد وما إلى ذلك. عند الاستخدام، سيقوم مشغل eq بإرجاع قيمة بوليانية True أو False اعتمادًا على النتيجة.

يحتاج مشغل -eq إلى قيمتين للمقارنة. لنقل أنك قد قمت بتعيين سلسلة إلى متغير يسمى $string. ترغب في مقارنة قيمة هذا المتغير بقيمة السلسلة "PowerShell" للتأكد من أنهما متساويين.

في المثال التالي، يمكنك رؤية أننا نعين قيمة PowerShell إلى المتغير $string. ثم، باستخدام مشغل eq، يقوم المثال بمقارنة قيمة $string مع السلسلة powershell. سهل بما فيه الكفاية، أليس كذلك؟ ولكن انتظر، فهما ليستا حقاً نفس الشيء.

PS> $string = "PowerShell"
PS> $string -eq "powershell"
True

لاحظ أن = هو مشغل تعيين وليس مشغل مقارنة. لا يمكنك استخدام = لمقارنة قيمة مع قيمة أخرى في PowerShell.

اختبار الحساسية لحالة الأحرف باستخدام مشغل ceq

في المثال أعلاه، لاحظ كيف عاد مشغل eq بقيمة منطقية True حتى عندما لم تكن السلسلة مطابقة تماماً. يحدث هذا السلوك لأن مشغل eq غير حساس لحالة الأحرف. لاختبار المساواة التي تهتم بحساسية حالة الأحرف، استخدم مشغل ceq. مشغل ceq هو نفس مشغل eq باستثناء أنه يهتم بحساسية حالة الأحرف.

يمكنك رؤية مثال على استخدام ceq في كود القطعة التالي. الآن لاحظ كيف يرى PowerShell الفارق بحساسية حالة الأحرف.

PS> $string -ceq "PowerShell"
True 
PS> $string -ceq "powershell"
False

اختبار عدم المساواة باستخدام مشغلي ne و cne

تماماً كما تختبر eq و ceq المساواة، يحتوي PowerShell على زوج من المشغلين الذين يقومون بالعكس تماماً يسمون ne و cne. مثل نظرائهما، يقوم هذان المشغلان بنفس العملية لكن بشكل معاكس.

PS> $string = "PowerShell"
PS> $string -ne "PowerShell"
False
PS> $string -cne "PowerShell"
False
PS> $string -cne "powershell"
True

اختبار العناصر في مجموعة

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

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

PS> $array =@(1,2,3,4,5,6,7,8,9,9,9,9)
PS> $array -eq 9
9
9
9
9
PS> ($array -eq 9).Count
4

اختبار تواجد القيم في المجموعات

نظرًا لأنك للتو تعلمت استخدام المشغل eq للعثور على الحالات في المصفوفات، دعنا نأخذ ذلك خطوة إلى الأمام ونقدم لك المشغلات “تواجد القيم”. هذه المشغلات هي contains، notcontains، in و notin. تعيد هذه المشغلات قيمة بولية True أو False إذا كانت المجموعة تحتوي على الحالة أم لا.

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

PS> $array = @(2,4,5,6,8,8,9,9,9)
PS> $array -contains 9
True
PS> $array -notcontains 9
False
PS> $array -contains 5

بالمثل، لديك مشغلات in و notin. هذه المشغلات متطابقة تقريبًا مع contains و notcontains باستثناء واحد: القيمة المقارنة على اليسار بدلاً من اليمين.

$array = @(2,4,5,6,8,8,9,9,9)
9 -in $array
True
9 -notin $array
False

اختبار “أكبر من” باستخدام مشغلات gt و ge

ماذا يحدث إذا كنت بحاجة إلى اختبار ما إذا كان الرقم (عدد صحيح) أكبر من رقم آخر أو ربما أكبر من أو يساوي رقمًا آخر؟ ستستخدم المشغلات `gt` و `ge`. تقارن هذه المشغلات بين الأعداد الصحيحة.

مثل المشغلات الأخرى، تعيد هذه المشغلات قيم بولية `True` أو `False` اعتمادًا على ما إذا كان أحد الأعداد الصحيحة أكبر من الآخر. تقوم كلتا هذه المشغلات ب اختبار ما إذا كانت العدد الصحيح على اليسار أكبر من أو يساوي العدد الصحيح على اليمين.

في المثال أدناه، يمكنك رؤية كيفية سلوك كل من هذه المشغلات.

PS> 7 -gt 5
True
PS> 7 -gt 7
False
PS> 7 -ge 7
True

مماثل للمشغل `eq` الذي يسمح لك بالعثور على الحالات في المجموعات، يمكنك القيام بالشيء نفسه باستخدام المشغلات `ge` و `gt`. يبحث PowerShell من خلال كل عنصر في المجموعة ويقارن كل قيمة بالتي قدمتها. يمكنك رؤية مثال رائع على ذلك أدناه.

PS> $array =@(1,2,3,4,5,6,7,8,9,9,9,9)
PS> $array -gt 5
6
7
8
9
9
9
9
PS> $array -ge 5
5
6
7
8
9
9
9
9

اختبار “أقل من” باستخدام المشغلات `lt` و `le`

مماثل للمشغلات `gt` و `ge`، تقوم المشغلات `lt` و `le` بأداء نفس الوظيفة ولكن بشكل معاكس. تقوم المشغلات `lt` و `le` بمقارنة قيمتين لاختبار ما إذا كان العدد الصحيح على الجانب الأيسر أصغر من أو يساوي العدد الصحيح على اليمين.

يمكنك رؤية في المثال أدناه، تطبيق نفس الوظيفة لمقارنة كل قيمة في مجموعة بالطريقة نفسها كما في المشغلات `gt` و `ge`.

PS> $array =@(1,2,3,4,5,6,7,8,9,10)
PS> $array -lt 5
1
2
3
4
PS> $array -le 5 
1
2
3
4
5

التطابق استنادًا إلى البطاقات البرمجية مع مشغل PowerShell Like

حتى الآن، لقد تعلمت كيفية إجراء مطابقات 1:1. جميع العمليات التي تم استخدامها حتى الآن قارنت قيمة كاملة مع قيمة أخرى، ولكن PowerShell لديها خدعة أخرى في أكمامها. يمكنك أيضًا مقارنة القيم باستخدام الرموز البارزة أو النجوم الصغيرة.

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

كما هو الحال مع العمليات الأخرى، يمكن تطبيق هذه الوظيفة على المجموعات أيضًا.

يمكنك رؤية مثال على مشغل PowerShell مثل وأخي الحساس للحالة، clike، فيما يلي.

PS> $string = "PowerShell"
PS> $string -like "*Shell"
True
PS> $array = @("PowerShell","Microsoft")
PS> $array -like "*Shell"
PowerShell
PS> $array -clike "*Shell"
PowerShell

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

$string = "PowerShell" 
$string -notlike "*Shell"
False
$array = @("PowerShell","Microsoft")
$array -notlike "*Shell"
Microsoft
$array -cnotlike "*shell"
PowerShell
Microsoft

المطابقة بناءً على التعبير العادي

المشغل المماثل لـ PowerShell وأقاربه مفيدين، ولكن حينما تحتاج إلى تطابق أكثر تعقيدًا، يمكنك الغوص في عالم تعبيرات الاستطاب (regex) العميق والمظلم. باستخدام المشغلات match و notmatch، يمكنك إجراء تطابق نصي معقد للغاية باستخدام regex.

على غرار المشغل المماثل لـ PowerShell، تقوم المشغلات match ونظيرها المعاكس notmatch بمقارنة سلسلتين وإرجاع قيمة منطقية True أو False. وكذلك، يمكن تطبيق نفس السلوك للمجموعة كما يظهر في المثال أدناه.

PS> $string = "PowerShell"
PS> $string -match "ow"
True 

PS> $array = @("PowerShell","Microsoft")
PS> $array -match "ow"
PowerShell

PS> $string = "PowerShell"
PS> $string -cmatch "po"
False
PS> $string -cmatch "Po"
True

PS> $array = @("PowerShell","Microsoft")
PS> $array -cmatch "Po"
PowerShell

الملخص

في هذا المقال، تعرفت على المشغل المماثل لـ PowerShell والعديد من المشغلات الأخرى وكيفية استخدام كل مشغل لقيم فردية ومجموعات. رأيت كيف تختلف النتائج استنادًا إلى المشغل وسواء كانت القيمة فردية أم مجموعة.

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

PowerShell Like

Source:
https://adamtheautomator.com/powershell-like/