ביצוע מספר פעולות
בגרסאות של לחבוט לפני 4.0, מקרה אפשר לבצע רק פעולה אחת בהתאמה מוצלחת. לאחר התאמה מוצלחת, הפקודה תסתיים. כאן אנו רואים תסריט שבודק דמות:
#! / bin / bash
# case4-1: בדוק תו
קרא -n 1 -p "הקלד תו > " הד
מקרה $REPLY ב
[[:upper:]]) echo "'$REPLY' הוא אותיות רישיות." ;;
[[:lower:]]) echo "'$REPLY' הוא אותיות קטנות." ;;
[[:alpha:]]) echo "'$REPLY' הוא אלפביתי." ;;
[[:digit:]]) echo "'$REPLY' היא ספרה." ;; [[:graph:]]) echo "'$REPLY' הוא תו גלוי." ;;
[[:punct:]]) echo "'$REPLY' הוא סמל פיסוק." ;; [[:רווח:]]) echo "'$REPLY' הוא תו של רווח לבן." ;; [[:xdigit:]]) echo "'$REPLY' היא ספרה הקסדצימלית." ;;
esac
#! / bin / bash
# case4-1: בדוק תו
קרא -n 1 -p "הקלד תו > " הד
מקרה $REPLY ב
[[:upper:]]) echo "'$REPLY' הוא אותיות רישיות." ;;
[[:lower:]]) echo "'$REPLY' הוא אותיות קטנות." ;;
[[:alpha:]]) echo "'$REPLY' הוא אלפביתי." ;;
[[:digit:]]) echo "'$REPLY' היא ספרה." ;; [[:graph:]]) echo "'$REPLY' הוא תו גלוי." ;;
[[:punct:]]) echo "'$REPLY' הוא סמל פיסוק." ;; [[:רווח:]]) echo "'$REPLY' הוא תו של רווח לבן." ;; [[:xdigit:]]) echo "'$REPLY' היא ספרה הקסדצימלית." ;;
esac
הפעלת הסקריפט הזה מייצרת את זה:
[me@linuxbox ~]$ מקרה 4-1
הקלד תו > a
'a' הוא אותיות קטנות.
[me@linuxbox ~]$ מקרה 4-1
הקלד תו > a
'a' הוא אותיות קטנות.
התסריט עובד ברובו, אך נכשל אם דמות תואמת ליותר מאחת ממעמדות התווים POSIX. לדוגמה, התו "a" הוא גם אותיות קטנות וגם אלפביתי, כמו גם ספרה הקסדצימלית. ב לחבוט לפני גרסה 4.0 לא הייתה דרך מקרה להתאים יותר ממבחן אחד. גרסאות מודרניות של לחבוט, הוסף את הסימון ";;&" ל
לסיים כל פעולה, אז עכשיו נוכל לעשות זאת:
#! / bin / bash
# case4-2: בדוק תו
קרא -n 1 -p "הקלד תו > " הד
מקרה $REPLY ב
[[:upper:]]) echo "'$REPLY' הוא אותיות רישיות." ;;&
[[:lower:]]) echo "'$REPLY' הוא אותיות קטנות." ;;&
[[:alpha:]]) echo "'$REPLY' הוא אלפביתי." ;;&
[[:digit:]]) echo "'$REPLY' היא ספרה." ;;& [[:graph:]]) echo "'$REPLY' הוא תו גלוי." ;;&
[[:punct:]]) echo "'$REPLY' הוא סמל פיסוק." ;;& [[:רווח:]]) echo "'$REPLY' הוא תו של רווח לבן." ;;& [[:xdigit:]]) echo "'$REPLY' היא ספרה הקסדצימלית." ;;&
esac
#! / bin / bash
# case4-2: בדוק תו
קרא -n 1 -p "הקלד תו > " הד
מקרה $REPLY ב
[[:upper:]]) echo "'$REPLY' הוא אותיות רישיות." ;;&
[[:lower:]]) echo "'$REPLY' הוא אותיות קטנות." ;;&
[[:alpha:]]) echo "'$REPLY' הוא אלפביתי." ;;&
[[:digit:]]) echo "'$REPLY' היא ספרה." ;;& [[:graph:]]) echo "'$REPLY' הוא תו גלוי." ;;&
[[:punct:]]) echo "'$REPLY' הוא סמל פיסוק." ;;& [[:רווח:]]) echo "'$REPLY' הוא תו של רווח לבן." ;;& [[:xdigit:]]) echo "'$REPLY' היא ספרה הקסדצימלית." ;;&
esac
כשאנחנו מריצים את הסקריפט הזה, אנחנו מקבלים את זה:
[me@linuxbox ~]$ מקרה 4-2
הקלד תו > a 'a' הוא אותיות קטנות. 'a' הוא אלפביתי.
'a' הוא תו גלוי. 'a' היא ספרה הקסדצימלית.
[me@linuxbox ~]$ מקרה 4-2
הקלד תו > a 'a' הוא אותיות קטנות. 'a' הוא אלפביתי.
'a' הוא תו גלוי. 'a' היא ספרה הקסדצימלית.
התוספת של תחביר ";;&" מאפשרת להמשיך למבחן הבא במקום פשוט להסתיים.