שימוש בלולאה 'עד' בסקריפט Bash כדי ללולאה מעל פקודות.
Bash (Burne Again Shell) היא שורת פקודה של מעטפת ושפת סקריפטים במערכות הפעלה GNU/Linux. זוהי מעטפת ברירת המחדל עבור רוב ההפצות של לינוקס.
כמו רוב שפות הסקריפט, Bash מספק תחבירי לולאה כדי לחזור על משימות דומות מספר פעמים. במאמר זה נלמד כיצד להשתמש ב- עד
לולאה ב-Bash.
מבוא
ה עד
לולאה ב-Bash משמשת לביצוע פקודות (פקודות מבוצעות) מספר פעמים בהתבסס על פלט של פקודות אחרות (פקודות תנאי). הפקודות המבוצעות ימשיכו לפעול עד שפקודת התנאי ממשיכה להיכשל (כלומר, מחזירה מצב שאינו אפס. כל פקודה בלינוקס מחזירה 0 להצלחה ומספר שלם שאינו אפס לכישלון). זה בדיוק הפוך מזה בזמן
לולאה, שבה הפקודות המבוצעות ממשיכות לפעול עד שפקודת התנאי מצליחה.
אם ישנן מספר פקודות תנאי, ההצהרה מתייחסת רק לסטטוס של הפקודה האחרונה ברשימה, כלומר, הלולאה תפעל עד שהפקודה האחרונה ברשימה תמשיך להיכשל.
תחביר כללי
התחביר הכללי עבור עד
לולאה ב-Bash היא:
עד שנעשה
רשימת הפקודות הביצוע תפעל עד שהפקודה האחרונה ברשימת הפקודות התנאי תיכשל. ברגע שהפקודה האחרונה מצליחה, הלולאה יוצאת.
משתמשים יכולים לציין כל קובץ הפעלה ברשימות הפקודות. זה יכול להיות תוכניות לינוקס סטנדרטיות או תוכניות משתמש מותאמות אישית או סקריפטים. כל פקודה צריכה להיות בשורה חדשה או מופרדת באמצעות נקודה-פסיק באותה שורה.
הבה נראה כמה דוגמאות.
לולאה עד שלמשתנה יש ערך מסוים: הלולאה הבאה מופעלת עד לערך המשתנה איקס
הוא 10.
x=0 עד ש-[[ $x -eq 10 ]] לעשות הד $x ((x++))
בכל איטרציה, אנו בודקים אם הערך של x הוא 10. הערך נבדק באמצעות מִבְחָן
פקודה. [[ ביטוי ]]
הוא התחביר לפקודת הבדיקה (ראה מבחן גבר
).
ואז בתוך ה לעשות...עשה
בלוק, אנו פשוט מדפיסים את הערך של x ומגדילים אותו. הלולאה יוצאת ברגע שפקודת התנאי מצליחה, כלומר מתי $x
שווה ל 10
.
הערה: את משתנה האינדקס שישמש בלולאת 'עד' יש לאתחל לפני לולאת ה'עד' או בפקודות התנאי, בניגוד ללולאה for, המאפשרת לאתחל משתנה באופן מרומז.
עם מספר פקודות תנאי: הלולאה הבאה יוצרת 5 ספריות בשם dir0, dir1, ... dir4
.
z=0 עד הד "היי" הד "ביי" [[ $z -eq 5 ]] לעשות הד "יצירת dir$z..." mkdir dir$z ((z++)) בוצע
הפקודות הראשונות מהדהדות "היי" והד "ביי" יבוצעו פעם אחת לחלוטין; להצלחה או לכישלון שלהם אין כל השפעה על משך הזמן שהלולאה תפעל.
אז תבוצע פקודת הבדיקה לבדיקת הערך של המשתנה z. עד שהפקודה הזו ממשיכה להיכשל, כלומר עד שהערך של z הוא 5, פקודות התנאי והפקודות המבוצעות ממשיכות לפעול לפי הסדר. כאן, עבור כל איטרציה, הוא יריץ תחילה את 2 פקודות ההד במצב ולאחר מכן פקודת התנאי השלישית תבדוק את הערך של z. אם הוא לא 5, הוא נכנס ללולאה ומבצע את הפקודות הנתונות.
הפסקה והמשך
הצהרת הפסקה עבור יציאה מותנית
אנחנו יכולים גם להשתמש בהצהרה המותנית אם
בתוך הלולאה. ה אם
ניתן להשתמש בהצהרה עם א לשבור
הצהרה, ליציאה מותנית מהלולאה.
x=0 עד [[ $x -eq 10 ]] לעשות אם [[ $x -eq 5 ]] הפסקת fi echo $x ((x++)) בוצע
לולאה עד לעיל ידפיס מספרים מ-0 עד 4. ואז כאשר הערך של i הוא 5, הוא יפרצה מהלולאה. זה שימושי במיוחד כאשר יש לצאת מלולאה כאשר פקודה נותנת פלט ספציפי.
המשך בהצהרה כדי לדלג על איטרציה באופן מותנה
לבש יש גם א לְהַמשִׁיך
הצהרה כדי לדלג על חלק שנותר באיטרציה בלולאה אם תנאי מסוים מתקיים.
x=0 עד [[ $x -eq 10 ]] לעשות אם [[ $x -eq 5 ]] המשך fi echo $x ((x++)) done
הלולאה לעיל תדפיס מספרים מ-0 עד 10, למעט 5, כי במהלך האיטרציה של x=5
יש הצהרת continue, אשר תדלג על שאר הקוד בלולאה בהתחלה עם האיטרציה של x=6
.
שימוש בלולאות: סקריפטים ושורת פקודה
ניתן להשתמש בתחבירי הלולאה ב-Bash shell ישירות או מקובץ סקריפט של מעטפת להפעלה. דומה ל ל
ו בזמן
לולאות, פעם אחת עד
תחביר לולאה מוזן על המעטפת, המעטפת ממשיכה את ההנחיה כדי לאפשר למשתמש להמשיך את הפקודות שיעברו לולאה.
לחלופין, המשתמש יכול לשמור זאת בקובץ סקריפט ולהפעיל את קובץ הסקריפט.
ה #!/bin/bash
בהתחלה מציין את המתורגמן שישמש בעת ביצוע הקובץ. למרות ש-Bash היא המעטפת הנפוצה ביותר כיום, חלק מהמשתמשים מעדיפים קונכיות כמו זש
, אשר יש לציין במקום bash בתחילת קובץ זה.
לתת הרשאות ביצוע עבור הקובץ הזה, הפעל:
chmod +x test.sh
סוף כל סוף, כדי לבצע את הקובץ, הרץ:
./test.sh
סיכום
ה עד
לולאה היא תכונה חשובה נוספת ב-Bash scripting. יש לזה חשיבות מיוחדת בסקריפטים מורכבים כאשר קבוצה מסוימת של תוכניות צפויה להחזיר מצב כשל, ויש לבצע כמה פקודות אחרות כדי לרשום את הכשל, להציג שגיאה בפירוט, או פשוט להפעיל כמה תוכניות חלופיות.