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

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

אם יש לך משתנה עם אוסף של ערכים כמו מערך תוכל להשתמש ב־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.