Bash 'For' Loop: הדרכה ודוגמאות

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

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

מבוא

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

תחביר כללי

התחביר הכללי עבור ל לולאה ב-Bash היא:

עבור ב-do ... ... נעשה

הנה ה הוא משתנה Bash, אשר חייב להיות שם משתנה מעטפת לינוקס חוקי, כלומר, השם מכיל שילוב של אותיות (az, AZ), מספרים (0-9) וקווי תחתון (_) והוא חייב להתחיל באות או קו תחתון.

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

כל פקודה/ות שיש לבצע חייבת להיות ממוקמת בתוך לעשות..בוצע לַחסוֹם.

הבה נראה כמה דוגמאות פשוטות.

לולאה על טווח של ערכי מספר שלם: הקוד הבא יוצר ספריות בשם dir1, dir2, dir3 upto dir10.

עבור i ב-{1..10} עשה mkdir dir$i בוצע

לולאה על רשימה של ערכים קבועים: הקוד הבא מדפיס כל מחרוזת או מספר שלם ברשימה הקבועה הנתונה.

for i in Hello 1 2 3 ביי! לעשות הד $i עשיתי

לולאה בפלט של פקודה: הקוד הבא עובר לולאה על פלט של ls ומדפיס את השם של כל קובץ בפורמט הנתון.

עבור i in `ls` לעשות הד "שם הקובץ הוא $i" נעשה

תחביר מבוסס ביטוי

תחביר מבוסס ביטוי הדומה לשפת התכנות C אפשרי גם ב-Bash:

עבור ((ביטוי 1; ביטוי 2; ביטוי 3)) לעשות ... ... נעשה

כאן, ביטוי 1 הוא האתחול של משתני המדד(ים). ביטוי 2 הוא המצב שבו יש לצאת מהלולאה; מצב זה נבדק בכל איטרציה. ביטוי 3 מציין את העלייה/הקטנה/שינוי בערך של משתני המדד/ים

הדוגמה הבאה פשוט מדפיסה ערכים מ-0 עד 4:

עבור ((i=0;i<5;i++)) האם echo $i done

הדוגמה הבאה יוצרת לולאה אינסופית, מכיוון שלא צוינו ביטויים:

עבור (( ; ; )) לעשות הד "הקש Ctrl-C כדי לעצור" בוצע

הפסקה והמשך

הצהרת הפסקה עבור יציאה מותנית

אנחנו יכולים גם להשתמש בהצהרה המותנית אם בתוך הלולאה. ה אם ניתן להשתמש בהצהרה עם א לשבור הצהרה, ליציאה מותנית מהלולאה.

עבור ((i=0;i<10;i++)) לעשות אם [[ $i -eq 5 ]] אז break else echo $i; פי בוצע

הלולאה שלמעלה תדפיס מספרים מ-0 עד 4. ואז כאשר הערך של i הוא 5, היא תפרוץ מהלולאה. זה שימושי במיוחד כאשר יש לצאת מלולאה כאשר פקודה נותנת פלט ספציפי. לדוגמה, הלולאה הבאה נשברת אם וכאשר היא מוצאת קובץ ריק.

עבור קובץ ב-`ls` do flen=`wc -c $file` אם [[ "$flen" = "0 $file" ]] אז הד "$file ריק" break else echo $flen fi בוצע 

הפקודה wc -c מדפיס מספר שורות בקובץ . זה מדפיס אותו בפורמט , לדוגמה, 10 test.txt. אנו יוצאים מהלולאה כאשר מספר השורות הוא 0, כלומר, קובץ ריק.

המשך בהצהרה כדי לדלג על איטרציה באופן מותנה

בדומה ל-C ולשפות תכנות רבות אחרות, ל-bash יש גם א לְהַמשִׁיך הצהרה, כדי לדלג על חלק שנותר מאיטרציה בלולאה אם ​​תנאי מסוים מתקיים.

עבור ((i=0;i<10;i++)) תעשה אם [[ $i -eq 5 ]] אז המשך fi echo $i; בוצע

הלולאה לעיל תדפיס מספרים מ-0 עד 10, למעט 5, כי במהלך האיטרציה של i=5 יש הצהרת continue, אשר תדלג על שאר הקוד בלולאה בהתחלה עם האיטרציה של i=6.

בדוגמה הבאה, אנו מדפיסים את מספר השורות בקובץ, ואיטרציה מסוימת תעשה זאת לְהַמשִׁיך אם זה ספרייה ולא קובץ.

עבור קובץ ב- `ls` עשה אם [[ -d $file ]] ואז המשך fi wc -c "$file" נעשה

[[ -d $file ]] בודק אם הקובץ הוא ספרייה. אם כן, אנו מדלגים לקובץ הבא, כלומר לאיטרציה הבאה. אם זה לא ספרייה, אנו מדפיסים את מספר השורות בקובץ באמצעות שירותים פקודה, כפי שהוצג גם קודם.

שימוש בלולאות: סקריפטים ושורת פקודה

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

לחלופין, המשתמש יכול לשמור זאת בקובץ סקריפט ולהפעיל את קובץ הסקריפט.

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

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

chmod +x test.sh

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

./test.sh

סיכום

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