הכתיבה של סקריפט של Bourne Again Shell (Bash) יכולה להיות חווייתית, במיוחד כשאתה מוסיף לו לוגיקה כדי להבטיח את הגמישות שלו. דרך אחת לשלב לוגיקה זו ולהפוך את הסקריפט שלך לחכם יותר היא דרך שימוש בהצהרות תנאי, בדיוק 'bash if else'.
בהעמקה זו, אתה עומד להבין את הכוח והפינוטים של ההצהרות if-else ו-case ב-Bash. זה יסייע לך ליצור סקריפטים ב-Bash חכמים ובלתי טעים. נזרוק גם כמה ייעוץ מקצועי כדי לוודא שאתה כותב סקריפטים כמו מומחה.
מתרגש? התעמק, והרמת את תחום המומחיות שלך ב-Bash!
הכנה לפעולה: דרישות מוקדמות
כדי להפיק את המרב מהמדריך הזה, יש כמה דברים חשובים שצריך להכין מראש:
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
למה לנצל את ההצהרות bash if else?
למה ההצהרות התנאי כל כך מוכרחות בכתיבת סקריפטים ב-Bash? פשוט לומר, הן מעניקות לסקריפטים שלך את היכולת לקבל החלטות בהתבסס על תנאים מוגדרים מראש.
לדוגמה, תוכל להשתמש ב-'bash if else' כדי לוודא אם קובץ קיים לפני שאתה מנסה למחוק אותו. בנוסף, ייתכן שתרצה לראות אם משתמש מחזיק בהיתרים הנדרשים לפני שאתה מאפשר לו גישה למשאב.
הכנסת תסריטים עם מבנים 'bash if else' לא רק מחזקת את הגמישות שלהם אלא גם את יעילותם. דמיינו תסריט שמיועד לנקות את כל הקבצים בתיקייה. באמצעות 'bash if else', ניתן למחוק רק את הקבצים שנגילו למעלה מ-30 ימים, ולשמור על השאר.
נכנסים לתוך ההצהרה 'bash if else'
עכשיו, נשאיר את ההקדמה מאחור ונתחיל לעבוד. נתחיל עם אחת מההצהרות התנאי הנפוצות ביותר: ההצהרה 'bash if else'.
בלב ההצהרה 'bash if else' נמצאת דרך להכניס תנאים לתסריטים שלך. ניתן לראות את התחביר האלגנטי שלה למטה:
- התחלה עם המילה המפתח if, לאחריה מתקיימים התנאים המקוננים בתוך [[ ]]. לאחר מכן, הקוד ששוכן בתוך ההצהרה 'bash if else' מתבצע, ומסתיים עם המילה המפתח fi.
- המילה המפתח then מפרידה את התנאי מהפעולות (או ההצהרות) שמתבצעות כאשר התנאים מתקיימים. בלוק הפעולה יכול להיות מרובה שורות, מופרדות בנקודות פסיק (;).
דמיינו תסריט של מערכת התחברות. הוא מבקש את שם המשתמש הנכון לפני שמעניק גישה:
1. הפעילו את הטרמינל שלכם והתחילו קובץ חדש bash_if_demo.sh באמצעות העורך הטקסט המועדף עליכם. זה יהיה גן המשחק שלנו להבנת ההצהרות 'bash if else'.
2. הטמע את דוגמת 'bash if else' המוצגת להלן בקובץ השלך bash_if_demo.sh. לאחר הטמעה, שמור את השינויים וצא מהעורך.
תסריט הדוגמה 'bash if else' מבקש שם משתמש. אם השם משתמש הצפוי נכנס, הודעת קבלת פנים תוצג, ותתייג בתאריך ושעה הנוכחיים.
שמירה על רשומה של תאריך ושעת נסיונות גישה של משתמשים יכולה להיות יקרה לניתוחים עתידיים.
השורה המבואית #!/bin/bash (לרוב ידועה כ-shebang) מציינת למערכת איזה מפרש להשתמש לעיבוד הקוד שאחריו בתסריט. כאן, 'bash' הוא המפרש שבחרנו.
3. כעת, בואו נבדוק את סקריפט ה-'bash if else' שלנו. בצעו את הפקודה הבאה:
רק תזכירו, בלתי תלוי בגרסת ה- Bash שאתם משתמשים בה, יש להקדים את שם הסקריפט שלכם ב-'bash'. זהו מבטיח שהמערכת תשתמש ב- Bash לביצוע הסקריפט.
הזינו "ATA" והקישו Enter. התוצאה אמורה להיראות כך:

אם תזינו כל דבר שאינו "ATA", הודעת הברכה לא תופיע בפלט. רק התאריך והשעה הנוכחית יוצגו. ההתנהגות זו נגרמת על ידי הצהרת 'bash if else' הבודקת התאמה מדויקת לערך במשתנה $NAME.
שימו לב שההצהרות 'bash if else' תלויות בגופי גדר. לכן, "ata", "aTa", "Ata" וכו ', הם שונים מ-"ATA".

נסו בתדירות קבועה את סקריפטי ה-'bash if else' שלכם עם קלטים שונים. זה מבטיח שהסקריפטים יפעלו כפי שצוין.
חפירה עמוקה: הצהרות 'bash if else' מקוננות
כבר הבנתם את היסודות של כתיבת הצהרות 'bash if else'. בעוד הידע היסודי הזה מספיק למשימות פשוטות, סקריפטים מורכבים יידרשו לבניית קונסטרוקציות מתקדמות. זהו המקום שבו הצהרות 'bash if else' מקוננות מתקוננות לתפקיד. למעשה, זו הצהרת 'if' שמכילה אחת או יותר של 'if' נוספות.
המבנה למטה ממחיש את התחביר הבסיסי להצהרות 'bash if else' מקוננות. כאן, ההצהרה החיצונית if [[ תנאים ]]
מכילה קוד שניתן לבצע רק בתנאי שהתנאים מתממשים. בהקשר שלנו, הקוד המקונן הוא הצהרת 'if' נוספת.
if [[ תנאים ]]
– זה מייצג את ההצהרה החיצונית 'if else' של bash. הקוד המקונן (הודעת 'if' נוספת) מתבצעת רק אם התנאי המצויין מתקיים.if [[ תנאי2 ]]
– זה מייצג את הסעיף הפנימי 'if else' של bash. הוא מכיל קוד שמתבצע רק אם ורק אם שני התנאים מתקיימים.
בואו נעמיק עוד. בשדרוג הדוגמה הקודמת שלנו 'if else' ב- bash, נכלול כעת הצהרת if
שמחפשת סיסמה:
1. ראשית, צרו קובץ חדש בשם bash_nested_if_demo.sh באמצעות עורך הטקסט המועדף עליכם.
2. העבירו את קוד 'if else' המסופק למטה לקובץ bash_nested_if_demo.sh, שמרו את השינויים שלכם וסגרו את העורך.
קוד 'if else' זה מזמין לשם ולסיסמה. במידה והתנאים לשם ולסיסמה מתאימים, מוצגת הודעה מסוימת. אם אין התאמה, הפלט מציג רק את התאריך והשעה הנוכחיים.
3. כעת, בואו נראה את התסריט 'bash if else' הזה בפעולה. הפעילו את הפקודה הבאה:
עבור תוצאות אופטימליות, הזינו ATA כשם משתמש ו- pwd123 כסיסמה.

אם הקלט שלכם מתקבל אינו "ATA" או "pwd123", המשוב היחיד שתקבלו יהיה בנוגע לתאריך והשעה הנוכחיים. זה בגלל שמבנה ה- 'bash if else' מחייב ביצוע שני התנאים.

פירוק 'Bash If Else' הצהרות
הצהרות 'Bash if else' הן יסודות בתסריטות Bash, המספקות יכולות קובעות לתסריטים שלך. אך, חשוב להבין כי שימוש בהצהרות 'if' אינו ללא חסרונות שלו.
האתגר הבולט הוא שהסתמכות יתרה על 'if' יכולה לעשות את הקוד שלך ללכלוך, ולהפוך אותו למעייף ומאתגר, במיוחד כאשר התנאים מקוננים. סקריפטים כאלה סובלים מסכריות קוד, המתארת את הקוד המבוך, וזהו מסתבר בקריאות נמוכה ומורכבות מתוך גובה.
אז, איך אפשר לייעל את הסקריפט שלך של 'if else' ב-'bash' כדי לשמור על המובנה? בחר בהצהרות 'if else' על פני ערימה של 'if' מקוננים. המילה 'else' מציעה את הנוחות של ציון קוד לביצוע אם התנאי 'if' נשאר ללא עמית.
לפרספקטיבה יותר ברורה, שקול את תחביר 'Bash If Else' למטה, היכן:
if [[ תנאים ]]
– כאן, ההצהרה 'bash if else' כוללת את הקוד (הצהרה1
) שמפעיל רק כאשר התנאי המצויין הוא חוקי.else
– זהו חלק מהמבנה 'bash if else'. ההצהרהelse
מכילה את הקוד (הצהרה2
) שמבוצע כאשר התנאי בפסקה הקודמתif
אינו מתקיים.
דמיינו לבנות משחק פשוט של 'if else' ב-'bash' שבו המערכת מצפה למספר אקראי מהמשתמש:
1. התחל בבניית קובץ חדש בשם bash_if_else_demo.sh.
2. שבץ את הקוד של 'if else' הבא לתוך הקובץ שלך bash_if_else_demo.sh, שמור את השינויים, וצא.
הקוד הבסיסי של 'if else' מעורר במשתמש את מספר המזל שלו. אם הקלט הוא זוגי, הוא מציג את ההודעה 'אתה ניצחת!'. להיפך, מספר אי-זוגי מפעיל את הפלט 'אתה הפסדת!'.
3. כדי לצפות בתסריט 'bash if else' בפעולה, הפעל את הפקודה למטה:
בעת הזנת ספרה זוגית, עליך לראות את ההודעה "ניצחת עם 'bash if else'!" . להפך, הזנת ספרה אי זוגית צריכה לגרום למשוב "הפסדת באמצעות 'bash if else'!"

כדי להעשיר את תסריט 'bash if else', שקול לכלול קטע שמקבל את כתובת האימייל של המשתמש אות או תו מיוחד בניגוד למספר.
פירוש 'Bash If Else' והצהרות Case
עד כה, חקרת מספר שיטות לקביעת החלטות בתסריטי Bash שלך, בעיקר דיונים 'bash if else'. אך Bash מציעה דרך נוספת לקביעת החלטות – צהרת case
.
דומה ל-'bash if else', צהרת ה-case מיועדת להגדיר רצף קוד שיבוצע בהתאם לתנאים מסוימים. יתרון משמעותי עם צהרת ה-case הוא תמיכתה בקיצור ובבהירות, במיוחס לתרגילי 'bash if else' מקוננים.
להבין באופן מלא את האלטרנטיבה 'bash if else', בואו נעמיק בתחביר של ההצהרת case:
case $VAR in
– רכיב זה של התחביר case מעריך את משתנה$VAR
נגד תבניות מוגדרות עד שמצויה התאמה.pattern1)
ו־pattern2)
– אלו הם הקריטריונים לבדיקה, וכאשר נמצאת התאמה, הקוד התואם (statement1
אוstatement2
) נפעל.esac
– מסיים את מבנה ה case.
תחשבו שאתם מעצבים סקריפט 'bash if else' שבו משתמשים מזינים את שמות המדינות שלהם, ובתגובה, הסקריפט מציג את השפה הרגישה ביותר של אותה מדינה.
1. התחילו על ידי יצירת קובץ בשם bash_case_demo.sh.
2. שלבו את קוד ה 'bash if else' המסופק למטה לקובץ bash_case_demo.sh שלכם, ואז שמרו וצאו.
הסקריפט 'bash if else' הנ"ל יעזור למשתמש להזין את שם המדינה שלהם, ועל סמך התבניות 'case', ידפיס את השפה הראשית שמדוברת במדינה הנזכרת.
3. כדי לחוות את סקריפט 'bash if else' זה ממש ביד, השתמש בפקודה הבאה:
תזהה כי הסקריפט מסמן בדיוק את השפה על פי בחירת המשתמש.
אם המדינה שסופקה לא תואמת את התבניות הקבועות, התבנית הברירת מחדל (*) נפעלת, והתוצאה היא "לא ידוע".

עיטור כתיבת דיבאג ב-Bash
במדריך זה, יצאת לדרך של הבנת 'bash if else' ותרחשת את יתרת ההצהרות התנאיות ב-Bash. מהפקודה הפשוטה 'if' ועד להצהרות המורכבות 'if-else' ו-'case', אתה כעת מצויד בכלי עיקריים לכתיבת סקריפטים יעילים ב-Bash.
עם היסודות הללו של 'bash if else' תוכל לבנות סקריפטים ב-Bash בצורה מיומנת יותר, ולהפחית את השגיאות.
אך תזכור, זה רק קצה של הקרח. Bash מציע רפרטואר נרחב של הצהרות תנאי. אולי כדאי לשקול לעמוד בתוך ההצהרה elif של Bash ו && , או אופרטורים || לעמק בהבנה. עם התמקדות, שליטה בתסריטים של Bash תהיה בקרוב תוך השגת מיומנות!