فهم مشغلات PowerShell EQ

هل تعاني من فهم مشغلات مقارنة 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، كنت أقوم بشيء مثل هذا باستمرار

$string = 'Adam'
if ($string = 'Adam') {
    'string is equal to Adam'
}

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

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

PowerShell’s eq vs ceq

لاحظ كيف عاد eq بقيمة منطقية True عند مقارنة المتغير الخاص بنا مع adam ولكن ceq عاد بقيمة منطقية False? هذا يعرض الفرق في حساسية الحالة بين المشغلين.

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

Using Eq to search arrays

إذا كان لديك متغير يحتوي على مجموعة من القيم مثل مصفوفة، يمكنك استخدام eq و ceq للعثور على جميع الحالات الخاصة بالقيم داخل المجموعة.

لاحظ أنه وجد جميع الحالات للعدد الصحيح 9 الذي حاولنا المقارنة به. أستخدم هذه الطريقة المفيدة طوال الوقت.

-NE و -CNE

من الجانب الآخر، لديك كل من ne و cne. إنهما بالضبط عكس eq و ceq ولكن يظهران نفس السلوك تمامًا ولكن بشكل معاكس. إنهما لا يختبران المساواة، بل يختبران العدم المساواة.

PowerShells ne vs. cne

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.

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