אנדרואיד

בש בעת לולאה

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

Anonim

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

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

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

באש בזמן לולאה

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

לולאת ה- Bash while לובשת את הצורה הבאה:

while do done

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

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

i=0 while do echo Number: $i ((i++)) done

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

Number: 0 Number: 1 Number: 2

אינסופי בזמן לולאה

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

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

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

לולאת הפתיחה שלמעלה תפעל ללא הגבלת זמן. ניתן לסיים את הלולאה על ידי לחיצה על CTRL+C

להלן מקבילה בשורה אחת:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

קרא קובץ שורה אחר שורה

אחד השימושים הנפוצים ביותר של לולאת הזמן הוא לקרוא קובץ, זרם נתונים או משתנה שורה אחר שורה.

בדוגמה הבאה לולאת הזמן תקרא את הקובץ /etc/passwd שורה אחר שורה ותדפיס כל שורה.

file=/etc/passwd while read -r line; do echo $line done < "$file"

במקום לשלוט על לולאת הזמן עם תנאי אנו משתמשים בהפניית קלט ( < "$file" ) כדי להעביר קובץ read שהיא הפקודה ששולטת בלולאה. לולאת ההפעלה תפעל עד לקריאת השורה האחרונה.

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

כברירת מחדל, הפקודה read חותכת את התווים המובילים / נגררים ברווחיות (רווחים וכרטיסיות). השתמש באפשרות IFS= לפני פקודת read כדי למנוע התנהגות זו

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

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

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

הצהרת הפסקה

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

בדוגמה הבאה, ביצוע הלולאה יופרע ברגע שהפריט המושרש הנוכחי שווה ל 2 .

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

המשך הצהרה

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

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

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

סיכום

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

מסוף לולאה bash