<Anterior | Conteúdo | Próxima>
padrões
Os padrões usados por casas são iguais aos usados pela expansão do nome do caminho. Os padrões são encerrados com um caractere “)”. Aqui estão alguns padrões válidos:
Tabela 31-1: Exemplos de padrão de caso
Descrição do Padrão
Descrição do Padrão
a) Corresponde se palavra é igual a “a”.
[[:alfa:]]) Corresponde se palavra é um único caractere alfabético.
???) Corresponde se palavra tem exatamente três caracteres.
*.TXT) Corresponde se palavra termina com os caracteres “.txt”.
*) Corresponde a qualquer valor de palavra. É uma boa prática incluir este como o último padrão em um casas comando, para capturar quaisquer valores de palavra que não correspondia a um padrão anterior; ou seja, para capturar quaisquer valores inválidos possíveis.
Aqui está um exemplo de padrões em funcionamento:
#! / Bin / bash
ler -p "inserir palavra>" caso $ REPLY em
[[: alpha:]]) echo "é um único caractere alfabético." ;; [ABC] [0-9]) echo "é A, B ou C seguido por um dígito." ;;
???) echo "tem três caracteres." ;;
* .txt) echo "é uma palavra que termina em '.txt'" ;;
*) echo "é outra coisa." ;; esac
#! / Bin / bash
ler -p "inserir palavra>" caso $ REPLY em
[[: alpha:]]) echo "é um único caractere alfabético." ;; [ABC] [0-9]) echo "é A, B ou C seguido por um dígito." ;;
???) echo "tem três caracteres." ;;
* .txt) echo "é uma palavra que termina em '.txt'" ;;
*) echo "é outra coisa." ;; esac
Também é possível combinar vários padrões usando o caractere de barra vertical como separador. Isso cria um padrão condicional “ou”. Isso é útil para tarefas como lidar com caracteres maiúsculos e minúsculos. Por exemplo:
#! / Bin / bash
# case-menu: um programa de informações do sistema orientado por menu claro
eco "
Por favor selecione:
A. Exibir informações do sistema
B. Exibir espaço em disco
C. Exibir utilização do espaço doméstico
Q. Desistir "
ler -p "Entrar na seleção [A, B, C ou Q] > "
caso $ REPLY em
q | Q) echo "Programa encerrado." saída
;;
a | A) echo "Hostname: $ HOSTNAME" uptime
;;
b | B) df -h
;;
c | C) if [[$ (id -u) -eq 0]]; então
echo "Utilização do espaço doméstico (todos os usuários)" du -sh / home / *
outro
echo "Utilização do espaço doméstico ($ USER)" du -sh $ HOME
fi
#! / Bin / bash
# case-menu: um programa de informações do sistema orientado por menu claro
eco "
Por favor selecione:
A. Exibir informações do sistema
B. Exibir espaço em disco
C. Exibir utilização do espaço doméstico
Q. Desistir "
ler -p "Entrar na seleção [A, B, C ou Q] > "
caso $ REPLY em
q | Q) echo "Programa encerrado." saída
;;
a | A) echo "Hostname: $ HOSTNAME" uptime
;;
b | B) df -h
;;
c | C) if [[$ (id -u) -eq 0]]; então
echo "Utilização do espaço doméstico (todos os usuários)" du -sh / home / *
outro
echo "Utilização do espaço doméstico ($ USER)" du -sh $ HOME
fi
;;
*) echo "Entrada inválida"> & 2 saída 1
;;
esac
;;
*) echo "Entrada inválida"> & 2 saída 1
;;
esac
Aqui, nós modificamos o menu de caso programa para usar letras em vez de dígitos para a seleção do menu. Observe como os novos padrões permitem a entrada de letras maiúsculas e minúsculas.