פשוט תנאי לוגי עם אופרטורים טרנריים ב-PowerShell

אוסף הַפקודות if/then הוא מקובל בקוד PowerShell, אך האם ידעת שיש דרך נוספת בשם אופרטור ternary שמאפשרת לך להפוך את אוסף הַפקודות if/then שלך להרבה יותר קצר? בוא נלמד איך לבנות אופרטור ternary מותאם אישית עבור PowerShell.

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

אם אתה לא מכיר את אופרטור ה-ternary, זה בגדר כלשהו של בניית הטיות של הפרשיית קריטריונים באמצעות hashtable או בנייה דומה.

if/then בפוורשל

כדי להסביר את אופרטור ה- Powershell ternary, בוא נתחיל עם דוגמה של אוסף פקודות if/then.

$CarColor = 'Blue'
if ($CarColor -eq 'Blue') {
    'The car color is blue'
} else {
    'The car color is not blue'
}

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

עכשיו בנה hashtable בפוורשל עם שני מפתחות: $true ו־$false. לאחר מכן, קבע את הערכים למה שתרצה שיתוצג אם תנאי שתגדיר יתממש.

@{ $true = 'The car color is blue'; $false = 'The car color is not blue' }
[$CarColor -eq 'Blue']

לְאַחַר מכן, תגדיר את התנאי ($CarColor הוא כחול) ותבדוק האם התנאי זה נפגש עם $CarColor -eq 'Blue'.

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}
$CarColor -eq 'Blue'

עכשיו תשתמש בתנאי ($CarColor -eq 'Blue') כמפתח בטבלת הגיבוב. על ידי זאת, הבדיקה תתבצע ואז תשתמש בתוצאה כדי לחפש את המפתח בטבלת הגיבוב.

סיום אופרטור ה־PowerShell Ternary

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}[$CarColor -eq 'Blue']
A custom PowerShell ternary operator

שורה אחת! האם זה לא הרבה יותר תמציתי? במקום להשתמש בהצהרת if/then, אני משתמש בטבלת גיבוב ומבצע חיפוש בה בהתבסס על כך האם $CarColor שווה ל־Blue או לא. האינדקס שתוצאתו מתקבלת מוצג אז למסך. אם ברצונך להשתמש בשיטה זו, זה פשוט כמו למלא את החסרים הללו:

@{$true = $ResultyouwanttodoifTrue; $false = $ResultyouwantifFalse}[]

תוכל גם לכלול יותר מ־$true ו־$false אם תרצה. תוכל להוסיף כל מספר של תנאים בטבלת הגיבוב ולבדוק אותם. זו דרך פשוטה להחליף הצהרות if/then ארוכות או הצהרות switch.

עכשיו יש לך אופרטור טרנרי מותאם אישית ב־PowerShell שאתה יכול להתחיל להשתמש בו בתסריטים שלך היום!

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