הצהרת Bash 'אם אחר': הדרכה ודוגמאות

שימוש במשפט if…else ב-Bash לביצוע קוד מותנה.

Bash (Burne Again Shell) היא שורת פקודה של מעטפת ושפת סקריפטים במערכות הפעלה GNU/Linux. זוהי מעטפת ברירת המחדל עבור רוב ההפצות של לינוקס.

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

מבוא

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

שים לב שניתן לציין יותר משני תנאים, עבורם אליף ניתן להשתמש בהצהרה. המשתמש יכול לתת כל מספר תנאים באמצעות אליף, ולבסוף תנאי ברירת מחדל באמצעות אַחֵר לַחסוֹם. בוא נראה עוד על זה בתחביר ובדוגמאות שלהלן.

תחביר כללי

התחביר הכללי עבור אחרת הצהרה בבאש היא:

אם אז  אַחֵר  fi

כאן, אם ה מספק, כלומר, אם הוא מחזיר 0 (הצלחה), אז בלוק קוד 1 מבוצע. אם התנאי לא מחזיר 0, כלומר, הוא מחזיר מצב כשל, אז בלוק הקוד 2 מבוצע. ה אחרת בלוק מסתיים בא fi הַצהָרָה.

עבור מספר בלוקים התואמים למספר תנאים,אליף משמש:

אם אז  אליף אז  אליף אז  ... ... אחר  fi

כאן בודקים את התנאים לפי הסדר ומבוצעים בלוק הקוד של התנאי הראשון שמחזיר סטטוס 0 (הצלחה). לְמָשָׁל. אם מחזיר מצב שאינו אפס (כשל), לאחר מכן מסומן. אם מחזיר סטטוס 0, מוצא להורג. לאחר מכן, תנאים נוספים אינם נבדקים וביצוע הקוד ממשיך לקוד שאחרי fi הַצהָרָה.

אם אף אחד מהתנאים לא מחזיר סטטוס 0, בבלוק 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

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

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

באופן דומה, ניתן להשתמש בבלוק מקונן בתוך אליף לחסום גם כן.

מְבַצֵעַ אחרת: סקריפטים ושורת פקודה

בדומה לכל קוד Bash, ה אחרת ניתן להשתמש בהצהרה ב-Bash shell ישירות או מקובץ סקריפט של מעטפת להפעלה. ברגע שהמתורגמן בש מוצא א אם, אַחֵר אוֹ אליף הצהרה, זה ממשיך את המעטפת כדי לאפשר למשתמש להזין את בלוק הקוד.

המשתמש יכול גם לשמור את הקוד הזה בקובץ סקריפט ולהפעיל את קובץ הסקריפט.

ה #!/bin/bash בהתחלה מציין את המתורגמן שישמש בעת ביצוע הקובץ. למרות ש-Bash היא המעטפת הנפוצה ביותר כיום, חלק מהמשתמשים מעדיפים קונכיות כמו zsh, שאותן יש לציין במקום bash בתחילת קובץ זה.

כדי לתת הרשאות הפעלה לקובץ זה, הפעל:

chmod +x test.sh

לבסוף, כדי להפעיל את הקובץ, הרץ:

./test.sh

סיכום

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