הבנת אופרטורים של PowerShell EQ

האם אתה מתקשה להבין אופרטורים להשוואה בפוורשל כמו eq, ne, ceq ו־cne? אם כן, קרא הלאה.

בבאגרוד פיתוח תוכנה הרגע הראשון שבו נתקלתי ברגע של "מה?" היה כאשר ראיתי לראשונה את אופרטורי ההשוואה של פוורשל eq, ceq, cne, וכו'. בשפות תכנות אחרות ישנם אופרטורי השוואה אך לא בדיוק כמו בפוורשל. הייתי משתמש ב־== ו־<>.

לא רק שהתחביב נראה לי לגמרי שונה משפה תכנותית טיפוסית, הוא גם נוהג באופן שונה כאשר יש לטפל בהשוואת אוספים של ערכים.

זו דבר שהסתבך בו באמת כאשר למדתי על פוורשל, אך כעת זה נראה כמו המשל הישן של הבירה; זה טעם שמתרגלים אליו.

בוא נסקור בקצרה מהו אופרטור להשוואה אם אינך מוכר בו, ונכנס לעומק להבין את הדפוסים המיוחדים שפוורשל מציגה. לא תוך זמן רב, תוכל להשתמש באופרטורים בתסריטי פוורשל שלך בלי בעיה.

כפי שציינתי, כל שפות התכנות/תסריטים מכילות אופרטורים להשוואה. במשמעותם הבסיסית ביותר, אופרטורים להשוואה הם חיוניים להערכת ההבדלים בין דברים שונים. הם משמשים לקחת שני אובייקטים ולראות מה ההבדל (אם יש) ביניהם.

במקרה של פוורשל, אופרטורים יכולים גם לשמש למציאת אלמנטים בתוך אוספי ערכים.

למעבר לפוסט הזה, אני הולך להסביר על אופרטורי השוואה ואיך 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? זה מציג את ההבדל בין הרגישות לאותיות בין שני האופרטורים.

כל זה תקין וטוב לערכים סקלריים (יחידים) אך ניתן גם למצוא את כל המופעים של ערכים מסוימים באמצעות האופרטורים הללו כמו כן. לדוגמה, השתמש באופרטור PowerShell -eq כדי לסנן פריטים במערך:

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/