<ก่อนหน้านี้ | Contents | ถัดไป>
ดำเนินการหลายอย่าง
ในเวอร์ชันของ ทุบตี ก่อนปี 4.0 กรณี อนุญาตให้ดำเนินการได้เพียงครั้งเดียวในการแข่งขันที่ประสบความสำเร็จ หลังจากจับคู่สำเร็จ คำสั่งจะยุติลง ที่นี่เราเห็นสคริปต์ที่ทดสอบตัวละคร:
#! / bin / ทุบตี
# case4-1: ทดสอบตัวละคร
read -n 1 -p "พิมพ์ตัวอักษร > " echo
กรณี $REPLY ใน
[[:upper:]]) echo "'$REPLY' เป็นตัวพิมพ์ใหญ่" ;;
[[:lower:]]) echo "'$REPLY' เป็นตัวพิมพ์เล็ก" ;;
[[:alpha:]]) echo "'$REPLY' เป็นตัวอักษร" ;;
[[:digit:]]) echo "'$REPLY' เป็นตัวเลข" ;; [[:graph:]]) echo "'$REPLY' เป็นอักขระที่มองเห็นได้" ;;
[[:punct:]]) echo "'$REPLY' เป็นเครื่องหมายวรรคตอน" ;; [[:space:]]) echo "'$REPLY' เป็นอักขระช่องว่าง" ;; [[:xdigit:]]) echo "'$REPLY' เป็นเลขฐานสิบหก" ;;
ว่า C
#! / bin / ทุบตี
# case4-1: ทดสอบตัวละคร
read -n 1 -p "พิมพ์ตัวอักษร > " echo
กรณี $REPLY ใน
[[:upper:]]) echo "'$REPLY' เป็นตัวพิมพ์ใหญ่" ;;
[[:lower:]]) echo "'$REPLY' เป็นตัวพิมพ์เล็ก" ;;
[[:alpha:]]) echo "'$REPLY' เป็นตัวอักษร" ;;
[[:digit:]]) echo "'$REPLY' เป็นตัวเลข" ;; [[:graph:]]) echo "'$REPLY' เป็นอักขระที่มองเห็นได้" ;;
[[:punct:]]) echo "'$REPLY' เป็นเครื่องหมายวรรคตอน" ;; [[:space:]]) echo "'$REPLY' เป็นอักขระช่องว่าง" ;; [[:xdigit:]]) echo "'$REPLY' เป็นเลขฐานสิบหก" ;;
ว่า C
การรันสคริปต์นี้ทำให้เกิดสิ่งนี้:
[me@linuxbox ~]$ กรณีที่ 4-1
พิมพ์ตัวอักษร > a
'a' เป็นตัวพิมพ์เล็ก
[me@linuxbox ~]$ กรณีที่ 4-1
พิมพ์ตัวอักษร > a
'a' เป็นตัวพิมพ์เล็ก
สคริปต์ทำงานเป็นส่วนใหญ่ แต่จะล้มเหลวหากอักขระตรงกับคลาสอักขระ POSIX มากกว่าหนึ่งคลาส ตัวอย่างเช่น อักขระ "a" เป็นทั้งตัวพิมพ์เล็กและตัวอักษร รวมทั้งเลขฐานสิบหก ใน ทุบตี ก่อนเวอร์ชัน 4.0 ไม่มีทาง กรณี เพื่อให้ตรงกับการทดสอบมากกว่าหนึ่งรายการ เวอร์ชันทันสมัยของ ทุบตี, เพิ่มเครื่องหมาย “;;&” ไปที่
ยุติการกระทำแต่ละอย่าง ตอนนี้เราสามารถทำได้ดังนี้:
#! / bin / ทุบตี
# case4-2: ทดสอบตัวละคร
read -n 1 -p "พิมพ์ตัวอักษร > " echo
กรณี $REPLY ใน
[[:upper:]]) echo "'$REPLY' เป็นตัวพิมพ์ใหญ่" ;;&
[[:lower:]]) echo "'$REPLY' เป็นตัวพิมพ์เล็ก" ;;&
[[:alpha:]]) echo "'$REPLY' เป็นตัวอักษร" ;;&
[[:digit:]]) echo "'$REPLY' เป็นตัวเลข" ;;& [[:graph:]]) echo "'$REPLY' เป็นอักขระที่มองเห็นได้" ;;&
[[:punct:]]) echo "'$REPLY' เป็นเครื่องหมายวรรคตอน" ;;& [[:space:]]) echo "'$REPLY' เป็นอักขระช่องว่าง" ;;& [[:xdigit:]]) echo "'$REPLY' เป็นเลขฐานสิบหก" ;;&
ว่า C
#! / bin / ทุบตี
# case4-2: ทดสอบตัวละคร
read -n 1 -p "พิมพ์ตัวอักษร > " echo
กรณี $REPLY ใน
[[:upper:]]) echo "'$REPLY' เป็นตัวพิมพ์ใหญ่" ;;&
[[:lower:]]) echo "'$REPLY' เป็นตัวพิมพ์เล็ก" ;;&
[[:alpha:]]) echo "'$REPLY' เป็นตัวอักษร" ;;&
[[:digit:]]) echo "'$REPLY' เป็นตัวเลข" ;;& [[:graph:]]) echo "'$REPLY' เป็นอักขระที่มองเห็นได้" ;;&
[[:punct:]]) echo "'$REPLY' เป็นเครื่องหมายวรรคตอน" ;;& [[:space:]]) echo "'$REPLY' เป็นอักขระช่องว่าง" ;;& [[:xdigit:]]) echo "'$REPLY' เป็นเลขฐานสิบหก" ;;&
ว่า C
เมื่อเราเรียกใช้สคริปต์นี้ เราได้รับสิ่งนี้:
[me@linuxbox ~]$ กรณีที่ 4-2
พิมพ์ตัวอักษร > a 'a' เป็นตัวพิมพ์เล็ก 'a' เป็นตัวอักษร
'a' เป็นอักขระที่มองเห็นได้ 'a' เป็นเลขฐานสิบหก
[me@linuxbox ~]$ กรณีที่ 4-2
พิมพ์ตัวอักษร > a 'a' เป็นตัวพิมพ์เล็ก 'a' เป็นตัวอักษร
'a' เป็นอักขระที่มองเห็นได้ 'a' เป็นเลขฐานสิบหก
การเพิ่มไวยากรณ์ ";;&" ทำให้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สามารถดำเนินการต่อในการทดสอบครั้งต่อไป แทนที่จะยุติเพียง