בזמן
bash יכול לבטא רעיון דומה. נניח שרצינו להציג חמישה מספרים ברצף-
הזמנה מאחד עד חמש. א לחבוט ניתן לבנות את הסקריפט באופן הבא:
#! / bin / bash
# while-count: הצג סדרה של מספרים count=1
בעוד [[ $count -le 5 ]]; לעשות הד $count count=$((ספירה + 1))
עשה
הד "נגמר".
#! / bin / bash
# while-count: הצג סדרה של מספרים count=1
בעוד [[ $count -le 5 ]]; לעשות הד $count count=$((ספירה + 1))
עשה
הד "נגמר".
כאשר הוא מופעל, סקריפט זה מציג את הדברים הבאים:
[me@linuxbox ~]$ בעוד-ספירה
1
2
3
4
5
סיים.
[me@linuxbox ~]$ בעוד-ספירה
1
2
3
4
5
סיים.
התחביר של בזמן הפקודה היא:
בזמן פקודות; לַעֲשׂוֹת פקודות; בוצע
כמו if, בזמן מעריך את מצב היציאה של רשימת פקודות. כל עוד מצב היציאה הוא אפס, הוא מבצע את הפקודות בתוך הלולאה. בסקריפט למעלה, המשתנה לספור נוצר ומוקצה לו ערך התחלתי של 1. The בזמן הפקודה מעריכה את מצב היציאה של [[]] פקודה מורכבת. כל עוד [[]] הפקודה מחזירה סטטוס יציאה של אפס, הפקודות בתוך הלולאה מבוצעות. בסוף כל מחזור, ה [[]] הפקודה חוזרת על עצמה. לאחר חמש חזרות של הלולאה, הערך של לספור גדל ל-6, ה [[]] הפקודה כבר לא מחזירה מצב יציאה של אפס והלולאה מסתיימת. התוכנית ממשיכה עם ההצהרה הבאה בעקבות הלולאה.
אנחנו יכולים להשתמש ב- תוך לולאה לשפר את תפריט קריאה תוכנית מהפרק הקודם:
#! / bin / bash
# while-menu: תוכנית מידע מערכת מונעת בתפריט
#! / bin / bash
# while-menu: תוכנית מידע מערכת מונעת בתפריט
DELAY=3 # מספר שניות להצגת תוצאות
בעוד [[ $REPLY != 0 ]]; לַעֲשׂוֹת
ברור
חתול <<- _EOF_
בבקשה תבחר:
1. הצג מידע מערכת
2. הצג שטח דיסק
3. הצג את ניצול שטח הבית
0. עזוב
_EOF_
קרא -p "הזן בחירה [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; אז אם [[ $REPLY == 1 ]]; לאחר מכן
echo זמן פעילות של "Hostname: $HOSTNAME".
לישון $DELAY
fi
if [[ $REPLY == 2 ]]; ואז df -h
לישון $DELAY
fi
if [[ $REPLY == 3 ]]; לאחר מכן
if [[ $(id -u) -eq 0 ]]; לאחר מכן
echo "ניצול שטח ביתי (כל המשתמשים)" du -sh /home/*
אחר
echo "ניצול שטח ביתי ($USER)" du -sh $HOME
fi
לישון $DELAY
fi
אחר
echo "ערך לא חוקי."
לישון $DELAY
fi
עשה
echo "התוכנית הופסקה."
DELAY=3 # מספר שניות להצגת תוצאות
בעוד [[ $REPLY != 0 ]]; לַעֲשׂוֹת
ברור
חתול <<- _EOF_
בבקשה תבחר:
1. הצג מידע מערכת
2. הצג שטח דיסק
3. הצג את ניצול שטח הבית
0. עזוב
_EOF_
קרא -p "הזן בחירה [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; אז אם [[ $REPLY == 1 ]]; לאחר מכן
echo זמן פעילות של "Hostname: $HOSTNAME".
לישון $DELAY
fi
if [[ $REPLY == 2 ]]; ואז df -h
לישון $DELAY
fi
if [[ $REPLY == 3 ]]; לאחר מכן
if [[ $(id -u) -eq 0 ]]; לאחר מכן
echo "ניצול שטח ביתי (כל המשתמשים)" du -sh /home/*
אחר
echo "ניצול שטח ביתי ($USER)" du -sh $HOME
fi
לישון $DELAY
fi
אחר
echo "ערך לא חוקי."
לישון $DELAY
fi
עשה
echo "התוכנית הופסקה."
על ידי סגירת התפריט בלולאת while, אנו יכולים לגרום לתוכנית לחזור על תצוגת התפריט לאחר כל בחירה. הלולאה נמשכת כל עוד תשובה אינו שווה ל-"0" והתפריט מוצג שוב, מה שנותן למשתמש הזדמנות לבצע בחירה נוספת. בסוף כל פעולה, א לִישׁוֹן הפקודה מבוצעת כך שהתוכנית תשהה לכמה שניות כדי לאפשר לראות את תוצאות הבחירה לפני ניקוי המסך והתפריט יוצג מחדש. פַּעַם תשובה שווה ל-"0", המציין את הבחירה "יציאה",
הלולאה מסתיימת והביצוע ממשיך עם השורה הבאה עשה.