מקרה
In לחבוט, נקראת פקודה מורכבת מרובה בחירה מקרה. יש לו מס סינ-מס הבא:
מקרה מילה in
[דפוס [| דפוס]...) פקודות ;;]...
esac
אם אנו מסתכלים על תפריט קריאה תוכנית מפרק 28, אנו רואים את ההיגיון המשמש לפעול על בחירת המשתמש:
#! / bin / bash
# תפריט קריאה: תוכנית מידע מערכת מבוססת תפריט ברורה
הד "
בבקשה תבחר:
1. הצג מידע מערכת
2. הצג שטח דיסק
3. הצג את ניצול שטח הבית
0. צא"
קרא -p "הזן בחירה [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; אז אם [[ $REPLY == 0 ]]; לאחר מכן
#! / bin / bash
# תפריט קריאה: תוכנית מידע מערכת מבוססת תפריט ברורה
הד "
בבקשה תבחר:
1. הצג מידע מערכת
2. הצג שטח דיסק
3. הצג את ניצול שטח הבית
0. צא"
קרא -p "הזן בחירה [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; אז אם [[ $REPLY == 0 ]]; לאחר מכן
echo "התוכנית הופסקה." יְצִיאָה
fi
if [[ $REPLY == 1 ]]; לאחר מכן, הדהוד זמן פעולה של "שם מארח: $HOSTNAME".
יציאה
fi
if [[ $REPLY == 2 ]]; ואז df -h
יציאה
fi
if [[ $REPLY == 3 ]]; לאחר מכן
if [[ $(id -u) -eq 0 ]]; לאחר מכן
echo "ניצול שטח ביתי (כל המשתמשים)" du -sh /home/*
אחר
echo "ניצול שטח ביתי ($USER)" du -sh $HOME
fi יציאה
פי אחר
echo "ערך לא חוקי." >&2 יציאה 1
fi
echo "התוכנית הופסקה." יְצִיאָה
fi
if [[ $REPLY == 1 ]]; לאחר מכן, הדהוד זמן פעולה של "שם מארח: $HOSTNAME".
יציאה
fi
if [[ $REPLY == 2 ]]; ואז df -h
יציאה
fi
if [[ $REPLY == 3 ]]; לאחר מכן
if [[ $(id -u) -eq 0 ]]; לאחר מכן
echo "ניצול שטח ביתי (כל המשתמשים)" du -sh /home/*
אחר
echo "ניצול שטח ביתי ($USER)" du -sh $HOME
fi יציאה
פי אחר
echo "ערך לא חוקי." >&2 יציאה 1
fi
שימוש מקרה, נוכל להחליף את ההיגיון הזה במשהו פשוט יותר:
#! / bin / bash
# תפריט מקרה: תוכנית מידע מערכת מונחה תפריט ברורה
הד "
בבקשה תבחר:
1. הצג מידע מערכת
2. הצג שטח דיסק
3. הצג את ניצול שטח הבית
0. צא"
קרא -p "הזן בחירה [0-3] > "
מקרה $REPLY ב
0) הד "התוכנית הסתיימה." יְצִיאָה
;;
#! / bin / bash
# תפריט מקרה: תוכנית מידע מערכת מונחה תפריט ברורה
הד "
בבקשה תבחר:
1. הצג מידע מערכת
2. הצג שטח דיסק
3. הצג את ניצול שטח הבית
0. צא"
קרא -p "הזן בחירה [0-3] > "
מקרה $REPLY ב
0) הד "התוכנית הסתיימה." יְצִיאָה
;;
1) הדהוד זמן פעולה של "שם מארח: $HOSTNAME".
;;
2) df -h
;;
3) if [[ $(id -u) -eq 0 ]]; לאחר מכן
echo "ניצול שטח ביתי (כל המשתמשים)" du -sh /home/*
אחר
echo "ניצול שטח ביתי ($USER)" du -sh $HOME
fi
;;
*) הד "כניסה לא חוקית" >&2 יציאה 1
;;
esac
1) הדהוד זמן פעולה של "שם מארח: $HOSTNAME".
;;
2) df -h
;;
3) if [[ $(id -u) -eq 0 ]]; לאחר מכן
echo "ניצול שטח ביתי (כל המשתמשים)" du -sh /home/*
אחר
echo "ניצול שטח ביתי ($USER)" du -sh $HOME
fi
;;
*) הד "כניסה לא חוקית" >&2 יציאה 1
;;
esac
אל האני מקרה הפקודה מסתכלת על הערך של מילה, בדוגמה שלנו, הערך של ה- תשובה משתנה, ולאחר מכן מנסה להתאים אותו לאחד מהמפורטים דפוסי. כאשר נמצא התאמה, ה פקודות המשויכים לדפוס שצוין מבוצעים. לאחר שנמצא התאמה, לא מנסים התאמות נוספות.