هل تعاني من فهم مشغلات مقارنة PowerShell مثل eq
, ne
, ceq
و cne
؟ إذا كان الأمر كذلك، فاستمر في القراءة.
بمجيئي من خلفية تطوير البرمجيات، كانت أول لحظة “ها؟” لدي عندما رأيت لأول مرة مشغلات مقارنة PowerShell مثل eq
, ceq
, cne
، إلخ. جميع اللغات الأخرى لديها مشغلات مقارنة ولكن ليست تمامًا مثل PowerShell. كنت معتادًا على ==
و <>
.
لا يبدو فقط بناء الجملة مختلفًا تمامًا عن لغات البرمجة النموذجية، بل يتصرفون أيضًا بشكل مختلف عند مقارنة مجموعات القيم.
كان هذا شيئًا حقًا يعرقلني عندما كنت أتعلم عن PowerShell ولكن الآن يبدو وكأنه ذلك المثل القديم عن البيرة؛ إنه ذو مذاق مكتسب.
لنلق نظرة سريعة على ماهية مشغل المقارنة إذا لم تكن على دراية به، ولننغمس أعمق في التفاصيل التي يقدمها PowerShell. في وقت قريب، ستكون قادرًا على استخدام المشغلات في نصوص PowerShell الخاصة بك بدون أي مشكلة.
كما ذكرت، جميع لغات البرمجة/النصوص لديها مشغلات مقارنة. في أبسط معناها، مشغلات المقارنة ضرورية لتقييم كيفية مقارنة أشياء مختلفة بأشياء أخرى. يتم استخدامها لأخذ كائنين ورؤية ما هي الفرق (إذا وجد) بين تلك الكائنين.
في حالة PowerShell، يمكن أيضًا استخدام المشغلات للعثور على عناصر داخل مجموعات القيم.
لهذا المنشور، سأتحدث عن مشغلات المساواة وكيف يستخدم PowerShell هذه المشغلات. هذه هي eq
و ne
مع نظرائها الحساسة للحالة ceq
و cne
. للحصول على قائمة كاملة يمكنك زيارة موقع Technet أو ببساطة استخدام Get-Help about_comparison_operators
في وحدة التحكم PowerShell الخاصة بك.
PowerShell -EQ و -CEQ
إذا كنت بحاجة إلى التحقق مما إذا كان كائن متساوٍ مع كائن آخر، يجب عليك استخدام مشغلات eq
(غير حساسة للحالة) أو ceq
(حساسة للحالة). تختبر هذه المشغلات قيمة كل كيان ترغب في مقارنته مع.
عندما بدأت للتو في تعلم PowerShell، كنت أقوم بشيء مثل هذا باستمرار
ستتعلم قريبًا ما يكفي لعدم فعل ذلك. علامة =
هي مشغل للتعيين وليست مشغل للمقارنة. لا يمكنك استخدام علامة =
لمقارنة قيمة واحدة مع أخرى.
الطريقة الصحيحة للقيام بذلك هي تعريف القيمة التي تريد التحقق منها على الجانب الأيسر من التعبير واستخدام مشغل eq
. فيما يلي مثال على مشغلات eq
و ceq
وكيفية استخدامها.

لاحظ كيف عاد eq
بقيمة منطقية True
عند مقارنة المتغير الخاص بنا مع adam
ولكن ceq
عاد بقيمة منطقية False
? هذا يعرض الفرق في حساسية الحالة بين المشغلين.
هذا كل شيء جيد وممتاز للقيم الطبيعية (الفردية) ولكن يمكنك أيضًا العثور على جميع الحالات الخاصة بالقيم معينة باستخدام هذه العوامل أيضًا. على سبيل المثال، استخدم مشغل -eq في PowerShell لتصفية العناصر في مصفوفة:

إذا كان لديك متغير يحتوي على مجموعة من القيم مثل مصفوفة، يمكنك استخدام eq
و ceq
للعثور على جميع الحالات الخاصة بالقيم داخل المجموعة.
لاحظ أنه وجد جميع الحالات للعدد الصحيح 9 الذي حاولنا المقارنة به. أستخدم هذه الطريقة المفيدة طوال الوقت.
-NE و -CNE
من الجانب الآخر، لديك كل من ne
و cne
. إنهما بالضبط عكس eq
و ceq
ولكن يظهران نفس السلوك تمامًا ولكن بشكل معاكس. إنهما لا يختبران المساواة، بل يختبران العدم المساواة.

I hope this gives a good explanation of the equality comparison operators. This really got me hung up as a newbie and it never really clicked for me until I was just beat into submission by error messages. I hope this post prevents the same beat down I received.