לולאת while
חלק מהיחידה יסודות במסלול ה-Terminal של Coddy. שיעור 72 מתוך 82.
לולאת for מצוינת כשידוע לך בדיוק על אילו פריטים לעבור. אבל מה אם רוצים להמשיך בלולאה עד שתנאי מסוים משתנה? כאן נכנסת לתמונה לולאת while.
לולאת while ממשיכה לפעול כל עוד התנאי שלה נשאר true. הנה המבנה הבסיסי:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneהסקריפט הזה מדפיס את המספרים 1 עד 5.
הלולאה בודקת אם count קטן או שווה ל־5. אם כן, היא מריצה את גוף הלולאה, מגדילה את המונה באמצעות $((...)) לצורך חישוב אריתמטי, ובודקת שוב.
ברגע ש־count מגיע ל־6, התנאי הופך לשקר והלולאה נעצרת.
לולאות while מתאימות במיוחד כשלא ידוע מראש כמה איטרציות תצטרך. לדוגמה, ייתכן שתמשיך לבקש קלט עד שהמשתמש יקליד "quit":
#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
read -p "Enter command (quit to exit): " input
echo "You entered: $input"
doneהיזהרו עם לולאות while. אם התנאי לעולם לא הופך לשקרי, הלולאה שלכם תרוץ לנצח.
הקפד תמיד שמשהו בתוך הלולאה ישנה בסופו של דבר את התנאי, למשל הגדלת מונה או עדכון משתנה על סמך קלט מהמשתמש.
אתגר
קלצרו סקריפט shell בשם counter.sh שמשתמש בלולאת while כדי להדפיס מספרים מ-1 עד 4.
הסקריפט שלכם צריך:
- להתחיל בשורת shebang (
#!/bin/bash) - ליצור משתנה בשם
numעם הערך ההתחלתי1 - להשתמש בלולאת while שנמשכת כל עוד
numקטן או שווה ל-4 - בתוך הלולאה, להדפיס את המספר הנוכחי בתבנית:
Number: [num] - להגדיל את
numב-1 אחרי כל איטרציה באמצעות$((num + 1))
הפכו את הסקריפט לבר־הרצה והריצו אותו. הפלט שלכם צריך להיות:
Number: 1
Number: 2
Number: 3
Number: 4רמז: השתמשו ב-
-leלהשוואה של "קטן או שווה ל-". זכרו להגדיל את המונה בתוך הלולאה באמצעותnum=$((num + 1))כדי להימנע מלולאה אינסופית. סיימו את לולאת ה-while עםdone.
נסו בעצמכם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7תוכן הקובץ
ראש וזנבספירת מיליםפקודת המיוןפקודת הסינון לכפילויותיסודות grepgrep עם דגליםסיכום – בלש/ית טקסט13יסודות כתיבת סקריפטים ב-Shell
מהו סקריפט Shellיצירה והרצה של סקריפטמשתנים בסקריפטיםקלט משתמש בסקריפטיםמשפט ifלולאת forלולאת whileסיכום – נחשו את המספר2ניווט
הצגת ספריית העבודההצגת קבציםשינוי ספרייהנתיבים מוחלטים לעומת יחסייםספריית הבית וספריית השורשסיכום – מצאו את הדרך8ניתוב מחדש
פלט סטנדרטיכתיבה לקובץ תוך דריסת התוכןהוספה לקובץקלט סטנדרטישגיאה סטנדרטיתסיכום – בונה יומני רישום14פרויקט סקריפט לגיבוי
סקירת הפרויקטקבלת נתיב המקורתרגלו בעצמכם: Terminal אונליין