שימוש במשפט if…else ב-Bash לביצוע קוד מותנה.
Bash (Burne Again Shell) היא שורת פקודה של מעטפת ושפת סקריפטים במערכות הפעלה GNU/Linux. זוהי מעטפת ברירת המחדל עבור רוב ההפצות של לינוקס.
הצהרות מותנות הן חיוניות בכל שפת תכנות, מלוקטת כמו גם תסריטאית. הם מאפשרים למשתמש לבצע פיסת קוד המבוססת על תנאי מוגדר מראש, שהוא אחד היסודות של היגיון התכנות. במאמר זה נלמד כיצד להשתמש ב- אחרת
הצהרה מותנית בב"ש.
מבוא
ה אחרת
הצהרה ב-Bash מאפשרת למשתמש לתפעל את זרימת הקוד על סמך תנאים. המשתמש יכול לציין בלוקי קוד נפרדים לביצוע, שרק אחד מהם יתבצע לבסוף במהלך זמן הריצה, בהתבסס על התנאי המקביל שמתקיים.
שים לב שניתן לציין יותר משני תנאים, עבורם אליף
ניתן להשתמש בהצהרה. המשתמש יכול לתת כל מספר תנאים באמצעות אליף
, ולבסוף תנאי ברירת מחדל באמצעות אַחֵר
לַחסוֹם. בוא נראה עוד על זה בתחביר ובדוגמאות שלהלן.
תחביר כללי
התחביר הכללי עבור אחרת
הצהרה בבאש היא:
אם אז אַחֵר fi
כאן, אם ה מספק, כלומר, אם הוא מחזיר 0 (הצלחה), אז בלוק קוד 1 מבוצע. אם התנאי לא מחזיר 0, כלומר, הוא מחזיר מצב כשל, אז בלוק הקוד 2 מבוצע. ה
אחרת
בלוק מסתיים בא fi
הַצהָרָה.
עבור מספר בלוקים התואמים למספר תנאים,אליף
משמש:
אם אז אליף אז אליף אז ... ... אחר fi
כאן בודקים את התנאים לפי הסדר ומבוצעים בלוק הקוד של התנאי הראשון שמחזיר סטטוס 0 (הצלחה). לְמָשָׁל. אם אם אף אחד מהתנאים לא מחזיר סטטוס 0, שימו לב שה- כדי לבצע בלוק קוד אם למשתנה יש ערך מסוים: כדי לבדוק אם קיימים מספר ערכים: התנאים יכולים להיות כל פקודות לינוקס. בלוק הקוד המתאים יבוצע אם הפקודה תפעל בהצלחה. בדוגמה למעלה, מאז אנחנו יכולים גם לקנן אחר זה שימושי כאשר יש לבדוק קבוצה נפרדת של תנאים לאחר עמידה בתנאי ראשוני. לדוגמה, הקוד הבא מנסה להתקין תוכנת שרת אינטרנט: הקוד בודק תחילה אם Nginx כבר מותקן במערכת. אם כן, הוא פשוט מציג הודעה ויוצא. אם לא, הוא מנסה להתקין את Nginx. אם מסיבה כלשהי לא ניתן היה להתקין את Nginx במערכת מהחבילה, היא מנסה להתקין את Apache2. אם אפילו Apache2 נותן שגיאה בזמן ההתקנה, הוא יוצא ומציג הודעה שלא ניתן להתקין תוכנה. באופן דומה, ניתן להשתמש בבלוק מקונן בתוך בדומה לכל קוד Bash, ה המשתמש יכול גם לשמור את הקוד הזה בקובץ סקריפט ולהפעיל את קובץ הסקריפט. ה כדי לתת הרשאות הפעלה לקובץ זה, הפעל: לבסוף, כדי להפעיל את הקובץ, הרץ: בדומה לכל שפת תכנות, מחזיר מצב שאינו אפס (כשל), לאחר מכן
מסומן. אם
מחזיר סטטוס 0,
מוצא להורג. לאחר מכן, תנאים נוספים אינם נבדקים וביצוע הקוד ממשיך לקוד שאחרי
fi
הַצהָרָה. בבלוק else מבוצע. שימו לב שבלוק אחר הוא אופציונלי. אם לא מתקיים תנאי, וכן לא
אַחֵר
בלוק צוין, שום בלוק קוד מותנה לא יפעל, וביצוע הקוד ימשיך לקוד לאחר ה- fi
הצהרה, כפי שמוצג בתרשים הזרימה שלהלן.לאחר מכן
יש להשתמש בהצהרה רק לאחר אם
ו אליף
הצהרות ולא נדרש לאחר ה אַחֵר
הַצהָרָה.דוגמאות
x=0 אם [ $x -eq 0 ] אז הדהוד "הערך של X הוא 0" אחרת הד "הערך של X אינו 0" fi
x=2 אם [ $x -eq 0 ] אז הד "ערך של X הוא 0" elif [ $x -eq 1 ] אז הד "ערך של X הוא 1" elif [ $x -eq 2 ] ואז הד "Value of X הוא 2" אחרת הד "הערך של X הוא לא 0" fi
אם npm -v אז הדהוד "NPM קיים במערכת" אחרת sudo apt תתקין npm fi
npm
לא הותקן במערכת, הפקודה npm -v
החזיר סטטוס שאינו אפס. לפיכך, ביצוע הקוד נכנס ל- אַחֵר
block, שבו אנו מתקינים npm באמצעות מַתְאִים
מנהל אריזה. כפי שאנו יכולים לראות, זה הניע אותי להזין את הסיסמה והחל בהתקנה של npm.אחרת
בלוק בתוך אם
, אַחֵר
אוֹ אליף
לַחסוֹם:x=0 y=1 אם [ $x -eq 0 ] אז הד "X הוא 0" אם [ $y -eq 1 ] אז הד "Y הוא 1" אחרת הד "Y הוא לא 1" fi else echo "X הוא לא 0 אינץ' פי
אם nginx -v אז הד "NGINX כבר מותקן." אחרת, אם sudo apt התקנת nginx, אז הדהוד "התקנת NGINX מוצלחת." elif sudo apt התקן את apache2 ואז הד "התקנת APACHE2 מוצלחת." else echo "לא ניתן להתקין תוכנת אינטרנט כלשהי." fi
אליף
לחסום גם כן.מְבַצֵעַ
אחרת
: סקריפטים ושורת פקודהאחרת
ניתן להשתמש בהצהרה ב-Bash shell ישירות או מקובץ סקריפט של מעטפת להפעלה. ברגע שהמתורגמן בש מוצא א אם
, אַחֵר
אוֹ אליף
הצהרה, זה ממשיך את המעטפת כדי לאפשר למשתמש להזין את בלוק הקוד.#!/bin/bash
בהתחלה מציין את המתורגמן שישמש בעת ביצוע הקובץ. למרות ש-Bash היא המעטפת הנפוצה ביותר כיום, חלק מהמשתמשים מעדיפים קונכיות כמו zsh, שאותן יש לציין במקום bash בתחילת קובץ זה.chmod +x test.sh
./test.sh
סיכום
אחרת
הצהרה היא תכונה בסיסית של בש. לימוד השימוש בו עושה דרך ארוכה בכתיבת סקריפטים בסיסיים ומתקדמים.