Neste tópico, discutiremos os fundamentos das instruções case e como usá-las em scripts Bash.
A instrução Bash case é a forma mais simples de IF-THEN-ELSE com muitos elementos ELIF. Usar a instrução case torna nosso script bash mais legível e mais fácil de manter. Geralmente são aplicados para simplificar condições complexas com múltiplas opções diferentes.
A instrução Bash case segue uma lógica semelhante à instrução Javascript ou C switch. Há uma pequena diferença, como segue:
- A instrução Bash case recebe um valor uma vez e testa esse valor várias vezes. Ele para de procurar um padrão depois de encontrá-lo e executar a instrução vinculada a ele, o que é quase oposto no caso da instrução switch C.
Sintaxe de declaração de caso
A sintaxe da instrução bash case é fornecida abaixo:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Existem alguns pontos-chave nas declarações de caso bash:
- Cada instrução case no bash começa com a palavra-chave 'case', seguida pela expressão case e pela palavra-chave 'in'. A instrução case é fechada pela palavra-chave 'esac'.
- Podemos aplicar vários padrões separados por | operador. O operador ) indica o término de uma lista de padrões.
- Um padrão contendo as instruções é chamado de cláusula e deve ser finalizado com ponto e vírgula duplo (;;).
- Um símbolo de asterisco (*) é usado como padrão final para definir o caso padrão. É usado como caso padrão quando usado como último caso.
Como funciona
Primeiro de tudo, a instrução case expande a expressão e tenta fazer a correspondência com cada um dos padrões incluídos. Quando encontra uma correspondência, todas as instruções vinculadas são executadas até o ponto e vírgula duplo (;;). Após a primeira correspondência, case termina com o status de saída da última instrução executada.
Se não houver nenhum padrão correspondente, o status de saída do caso será zero. Caso contrário, o status de retorno será o status de saída das instruções executadas.
Se o padrão de asterisco padrão for usado, ele será executado caso não haja padrão correspondente.
Vamos tentar entender esse mecanismo com a ajuda de alguns exemplos:
Exemplo 1
Neste exemplo, definimos um cenário simples para demonstrar o uso da instrução case.
Script Bash
#!/bin/bash echo 'Do you know Java Programming?' read -p 'Yes/No? :' Answer case $Answer in Yes|yes|y|Y) echo 'That's amazing.' echo ;; No|no|N|n) echo 'It's easy. Let's start learning from javatpoint.' ;; esac
Saída
Exemplo 2
Neste exemplo, definimos um cenário combinado onde também existe um caso padrão quando nenhum caso correspondente anterior é encontrado.
formato de string java longo
Script Bash
#!/bin/bash echo 'Which Operating System are you using?' echo 'Windows, Android, Chrome, Linux, Others?' read -p 'Type your OS Name:' OS case $OS in Windows|windows) echo 'That's common. You should try something new.' echo ;; Android|android) echo 'This is my favorite. It has lots of applications.' echo ;; Chrome|chrome) echo 'Cool!!! It's for pro users. Amazing Choice.' echo ;; Linux|linux) echo 'You might be serious about security!!' echo ;; *) echo 'Sounds interesting. I will try that.' echo ;; esac
Saída
Executamos o script com três entradas diferentes, confira a saída abaixo: