18.4.2. Применение символа | при поиске по шаблону
18.4.2. Применение символа | при поиске по шаблону
При использовании оператора case в качестве команды or можно указывать символ. Например, vt100|vt102) соответствует шаблону vt100 или vt102.
В следующем примере у пользователя запрашивают тип терминала. Если пользователь вводит vt100 или vt102, выполняется сравнение с шаблоном "vtl00| vtl02)". В данном случае переменной term присваивается значение vt100. Если пользователь
указывает тип терминала, который не соответствует шаблону, с помощью шаблона * выполняется прием этой информации и значение типа терминала все равно устанавливается как vt100. Наконец, за пределами действия оператора case производится экспорт переменной term. Независимо от тех сведений, которые вводит пользователь, переменная term представляет действительный тип терминала, поскольку используется поиск по шаблону*.
$ pg caseterm
#!/bin/sh
# caseterm
echo " choices are.. vt100, vtl02, vt220"
echo -n "enter your terminal type :"
read TERMINAL
case $TERMINAL in
vtl00|vt102) TERM=vt100
;;
vt220) TERM=vt220
;;
*) echo "`basename $0`: Unknown response" >&2
;;
echo "setting it to vt100 anyway, so there"
TERM=vt100
esac
export TERM
echo "Your terminal ls set to $TERM"
Если при выполнении сценария указывается некорректный тип терминала, получим следующее:
$ caseterm
choices are.. vt100, vtl02, vt220 enter your terminal type :vt900
caseterm: Unknown response setting it to vt100 anyway, so there
Your terminal ls set to vt100
Если вводится существующий тип терминала, получим:
$ case2
choices are.. vt100, vtl02, vt220 enter your terminal type :vt220
Your terminal ls set to vt220
В любом случае пользователь устанавливает тип терминала.