Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Executando Ações Múltiplas

Em versões de bater antes de 4.0, casas permitia que apenas uma ação fosse realizada em uma partida bem-sucedida. Depois de uma correspondência bem-sucedida, o comando seria encerrado. Aqui, vemos um script que testa um personagem:



#! / Bin / bash


# case4-1: teste um personagem


ler -n 1 -p "Digite um caractere>" eco

caso $ REPLY em

[[: em maiúsculas:]]) echo "'$ REPLY' está em maiúsculas." ;;

[[: inferior:]]) echo "'$ REPLY' é minúsculo." ;;

[[: alpha:]]) echo "'$ REPLY' é alfabético." ;;

[[: dígito:]]) echo "'$ REPLY' é um dígito." ;; [[: gráfico:]]) echo "'$ REPLY' é um caractere visível." ;;

[[: punct:]]) echo "'$ REPLY' é um símbolo de pontuação." ;; [[: espaço:]]) echo "'$ REPLY' é um caractere de espaço em branco." ;; [[: xdigit:]]) echo "'$ REPLY' é um dígito hexadecimal." ;;

esac

#! / Bin / bash


# case4-1: teste um personagem


ler -n 1 -p "Digite um caractere>" eco

caso $ REPLY em

[[: em maiúsculas:]]) echo "'$ REPLY' está em maiúsculas." ;;

[[: inferior:]]) echo "'$ REPLY' é minúsculo." ;;

[[: alpha:]]) echo "'$ REPLY' é alfabético." ;;

[[: dígito:]]) echo "'$ REPLY' é um dígito." ;; [[: gráfico:]]) echo "'$ REPLY' é um caractere visível." ;;

[[: punct:]]) echo "'$ REPLY' é um símbolo de pontuação." ;; [[: espaço:]]) echo "'$ REPLY' é um caractere de espaço em branco." ;; [[: xdigit:]]) echo "'$ REPLY' é um dígito hexadecimal." ;;

esac


A execução deste script produz o seguinte:



[me @ linuxbox ~] $ case 4-1

Digite um caractere> a

'a' é minúsculo.

[me @ linuxbox ~] $ case 4-1

Digite um caractere> a

'a' é minúsculo.


O script funciona na maior parte, mas falha se um caractere corresponder a mais de uma das classes de caracteres POSIX. Por exemplo, o caractere "a" é minúsculo e alfabético, bem como um dígito hexadecimal. No bater antes da versão 4.0 não havia como casas para corresponder a mais de um teste. Versões modernas de bater, adicione a notação “;; &” para


encerrar cada ação, então agora podemos fazer isso:



#! / Bin / bash


# case4-2: teste um personagem


ler -n 1 -p "Digite um caractere>" eco

caso $ REPLY em

[[: em maiúsculas:]]) echo "'$ REPLY' está em maiúsculas." ;; &

[[: inferior:]]) echo "'$ REPLY' é minúsculo." ;; &

[[: alpha:]]) echo "'$ REPLY' é alfabético." ;; &

[[: dígito:]]) echo "'$ REPLY' é um dígito." ;; & [[: gráfico:]]) echo "'$ REPLY' é um caractere visível." ;; &

[[: punct:]]) echo "'$ REPLY' é um símbolo de pontuação." ;; & [[: espaço:]]) echo "'$ REPLY' é um caractere de espaço em branco." ;; & [[: xdigit:]]) echo "'$ REPLY' é um dígito hexadecimal." ;; &

esac

#! / Bin / bash


# case4-2: teste um personagem


ler -n 1 -p "Digite um caractere>" eco

caso $ REPLY em

[[: em maiúsculas:]]) echo "'$ REPLY' está em maiúsculas." ;; &

[[: inferior:]]) echo "'$ REPLY' é minúsculo." ;; &

[[: alpha:]]) echo "'$ REPLY' é alfabético." ;; &

[[: dígito:]]) echo "'$ REPLY' é um dígito." ;; & [[: gráfico:]]) echo "'$ REPLY' é um caractere visível." ;; &

[[: punct:]]) echo "'$ REPLY' é um símbolo de pontuação." ;; & [[: espaço:]]) echo "'$ REPLY' é um caractere de espaço em branco." ;; & [[: xdigit:]]) echo "'$ REPLY' é um dígito hexadecimal." ;; &

esac


Quando executamos este script, obtemos o seguinte:



[me @ linuxbox ~] $ case 4-2

Digite um caractere> a 'a' é minúsculo. 'a' é alfabético.

'a' é um caractere visível. 'a' é um dígito hexadecimal.

[me @ linuxbox ~] $ case 4-2

Digite um caractere> a 'a' é minúsculo. 'a' é alfabético.

'a' é um caractere visível. 'a' é um dígito hexadecimal.


A adição da sintaxe ";; &" permite que o caso continue para o próximo teste em vez de simplesmente encerrar.


Top OS Cloud Computing na OnWorks: