Estrutura case - Linux

A estrutura case permite comparar uma expressão (como uma variável) com uma série de valores. Se a expressão corresponder a um valor específico, um conjunto de comandos será executado. A sintaxe geral da estrutura é a seguinte:

case expressão in
    valor1)
    conjunto_comandos1
    ;;
    valor2)
    conjunto_comandos2
    ;;
    valorN)
    conjunto_comandosN
    ;;
esac

A estrutura começa com a palavra case e termina com a palavra esac. Após case, vem a expressão (como uma variável) que será comparada com um conjunto de valores.

Cada bloco de valor possui o seguinte formato:

valor)
comando
;;

Vamos considerar um exemplo simples. Definimos o script hello com o seguinte código:

#!/bin/bash
# Script que utiliza a estrutura case
# variável cujo valor será comparado com um conjunto de valores
num=2
case $num in
    1)
    echo "num = 1"
    ;;
    2)
    echo "num = 2"
    ;;
    3)
    echo "num = 3"
    ;;
esac
    
echo "Fim do programa"
exit 0

A variável num é igual a 1, e o primeiro bloco na estrutura case será executado:

1)
num=2   # alterando o valor da variável
echo "num = 1"
;;

Mesmo que o valor da variável num seja alterado para 2, o bloco subsequente destinado ao valor 2 não será executado, como podemos ver ao executar o script:

programicio@Programicio:~$ bash hello
num = 1
Fim do programa

Valor Padrão

No exemplo acima, o valor da variável foi comparado com três números. No entanto, o valor da variável pode representar outros números. Se num fosse igual a 4, nenhum dos blocos de comandos seria executado. Às vezes, é necessário tratar todos os outros casos, ou seja, executar um conjunto de comandos padrão. Nesse caso, podemos usar o caractere *, que corresponde a qualquer valor:

#!/bin/bash
  # Script que utiliza a estrutura case
  # variável cujo valor será comparado com um conjunto de valores
  num=4
  case $num in
      1)
      echo "num = 1"
      ;;
      2)
      echo "num = 2"
      ;;
      *)
      echo "Valor desconhecido"
      ;;
  esac
   
  echo "Fim do programa"
  exit 0
  

Nesse caso, se a variável num não for igual a 1 nem a 2, o comando echo "Valor desconhecido" será executado. Vamos testar o script:

programicio@Programicio:~$ bash hello
Valor desconhecido
Fim do programa

Também é possível verificar vários valores em um único bloco. Para isso, separam-se os valores comparados com a barra vertical |. Por exemplo:


#!/bin/bash
# Script que utiliza a estrutura case
# variável cujo valor será comparado com um conjunto de valores
num=2
case $num in
    1|2|3)
    echo "num é igual a 1, 2 ou 3"
    ;;
    4)
    echo "num é igual a 4"
    ;;
    *)
    echo "Valor desconhecido"
    ;;
esac
  
echo "Fim do programa"
exit 0

No primeiro bloco, comparamos num com três números: 1, 2 ou 3. Ou seja, o primeiro bloco de comandos será executado se a variável num for igual a 1, 2 ou 3. Resultado da execução do script:

programicio@Programicio:~$ bash hello
num é igual a 1, 2 ou 3
Fim do programa
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com