לולאת while
חלק מהיחידה יסודות במסלול ה-Terminal של Coddy. שיעור 72 מתוך 82.
לולאת for נהדרת כשאתה יודע בדיוק על אילו פריטים לעבור. אבל מה אם אתה רוצה להמשיך בלולאה עד שתנאי מסוים ישתנה? כאן נכנסת לתמונה לולאת while.
לולאת while ממשיכה לפעול כל עוד התנאי שלה נשאר נכון. הנה המבנה הבסיסי:
#!/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 אונליין