<Попередній | зміст | Наступна>
Виконання кількох дій
У версіях о бити до 4.0 р., випадок дозволено виконати лише одну дію під час успішного збігу. Після успішного збігу команда буде припинена. Тут ми бачимо скрипт, який тестує персонаж:
#! / бін / баш
# 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' є шістнадцятковою цифрою." ;;
що С
#! / бін / баш
# 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' є шістнадцятковою цифрою." ;;
що С
Запуск цього скрипту створює це:
[me@linuxbox ~]$ випадок 4-1
Введіть символ > a
"a" - малий регістр.
[me@linuxbox ~]$ випадок 4-1
Введіть символ > a
"a" - малий регістр.
Сценарій здебільшого працює, але не працює, якщо символ відповідає більш ніж одному з класів символів POSIX. Наприклад, символ "a" є як малим, так і алфавітним, а також шістнадцятковим розрядом. в бити до версії 4.0 не було можливості для випадок відповідати більш ніж одному тесту. Сучасні версії о бити, додайте позначення «;;&».
припиняти кожну дію, тож тепер ми можемо зробити це:
#! / бін / баш
# 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' є шістнадцятковою цифрою." ;;&
що С
#! / бін / баш
# 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' є шістнадцятковою цифрою." ;;&
що С
Коли ми запускаємо цей скрипт, ми отримуємо це:
[me@linuxbox ~]$ випадок 4-2
Введіть символ > a "a" - малий регістр. «а» — алфавітний.
«a» — видимий символ. «a» — шістнадцяткова цифра.
[me@linuxbox ~]$ випадок 4-2
Введіть символ > a "a" - малий регістр. «а» — алфавітний.
«a» — видимий символ. «a» — шістнадцяткова цифра.
Додавання синтаксису «;;&» дозволяє перейти до наступного тесту, а не просто завершити.
документація