אנדרואיד

Bas עבור לולאה

תוכן עניינים:

Anonim

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

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

ישנם שלושה מבני לולאה בסיסיים בתסריט Bash, לולאה, בעוד לולאה ועד לולאה.

במדריך זה, נסקור את היסודות של לולאות בבאש. אנו נראה לך כיצד להשתמש בשבירה ולהמשיך בהצהרות כדי לשנות את זרימת הלולאה.

הבאש הרגיל לולאה

הלולאה for לולאה עוברת על רשימת פריטים ומבצעת את מערך הפקודות הנתון.

ה- Bash for loop לובש את הטופס הבא:

for item in do done

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

לולאה מעל מיתרים

בדוגמה שלמטה הלולאה תתחלף על כל פריט ברשימת המיתרים והרכיב המשתנה יוגדר לפריט הנוכחי.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

הלולאה תפיק את הפלט הבא:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

לולאה מעל טווח מספרים

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

{START..END}

בדוגמה למטה הלולאה תעבור בין כל המספרים מ- 0 ל- 3.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

החל מאש 4, ניתן גם לציין תוספת בעת שימוש בטווחים. הביטוי לובש את הצורה הבאה:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

לולאה מעל רכיבי מערך

אתה יכול גם להשתמש בלולאה for כדי לחזור על מערך של אלמנטים:

בדוגמה שלמטה אנו מגדירים מערך BOOKS ומעבירים את כל האלמנטים במערך.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

Bas-B בסגנון לולאה

התחביר של סגנון C לולאה לובש את הצורה הבאה:

for ((INITIALIZATION; TEST; STEP)) do done

החלק INITIALIZATION מבוצע רק פעם אחת עם הפעלת הלולאה. לאחר מכן, נבדק חלק TEST . אם זה שקר מסתיים לולאת ה- for. אם TEST נכונה, הפקודות בגוף של לולאה מבוצעות וחלק ה- STEP מתעדכן.

בקוד הבא, הלולאה מככבת על ידי אתחול i = 0 , לפני כל איטרציה בודקת אם i ≤ 10 . אם נכון זה מדפיס את הערך הנוכחי של i ו- i ידי 1 ( i++ ) אחרת הלולאה תסתיים.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

הלולאה תעבור 1001 פעמים ותפיק את הפלט הבא:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

שבור והמשך אמירות

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

הצהרת הפסקה

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

בדוגמה הבאה אנו משתמשים במשפט if כדי לסיים את ביצוע הלולאה ברגע שהפריט המושרש הנוכחי שווה ל 'ליתיום'.

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

המשך הצהרה

הצהרת המשך יוצאת מהאיטרציה הנוכחית של לולאה ומעבירה את בקרת התוכנית לאיטרציה הבאה של הלולאה.

בדוגמה הבאה אנו חוזרים על טווח מספרים וכאשר הפריט המושרש הנוכחי שווה ל '2' הצהרת המשך תגרום לביצוע לחזור לתחילת הלולאה ולהמשיך עם האיטרציה הבאה.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

דוגמאות לאש לולאה

שינוי שם של קבצים עם רווחים בשם הקובץ

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

for file in *\ *; do mv "$file" "${file// /_}" done

בואו נשבר את הקוד שורה אחר שורה:

  • השורה הראשונה יוצרת לולאה למצב והיא עוברת ברשימה של כל הקבצים עם רווח על שמו. הביטוי *\ * יוצר את הרשימה. השורה השנייה חלה על כל פריט ברשימה ומעבירה את הקובץ לקובץ חדש המחליף את החלל בקו תחתון ( _ ). החלק ${file// /_} משתמש בהרחבת פרמטר הפגז כדי להחליף דפוס בתוך פרמטר במחרוזת. done מציין את סוף קטע הלולאה.

משנה סיומת קבצים

הדוגמה הבאה מראה כיצד להשתמש ב- Bash for loop כדי לשנות את שם כל הקבצים המסתיימים ב-.jpeg בספריה הנוכחית על ידי החלפת סיומת הקובץ מ-.jpeg ל-.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

בואו ננתח את הקוד שורה אחר שורה:

  • השורה הראשונה יוצרת לולאה למצב והיא עוברת ברשימה של כל הקבצים המסתיימים ב- '.jpeg'. השורה השנייה חלה על כל פריט ברשימה ומעבירה את הקובץ לקובץ חדש המחליף את '.jpeg' ב- '.jpg'.. ${file%.jpeg} להסרת החלק '.jpeg' משם הקובץ באמצעות הרחבת פרמטר הפגז done מציין את סוף קטע הלולאה.

סיכום

בשלב זה אמורה להיות לך הבנה טובה כיצד להשתמש בבאש עבור לולאה לאיתור רשימות.

מסוף לולאה bash