Declaração de caso Bash Sintaxe e exemplos
- 1465
- 109
- Enrique Gutkowski PhD
A declaração do caso é uma poderosa declaração condicional no Bash que permite testar uma variável contra uma lista de valores. É uma alternativa mais concisa e eficiente para usar várias declarações if-then. Muitas vezes é uma boa alternativa às declarações if-else. Você também pode usá -lo para processar os argumentos da linha de comando em um script de shell.
Neste artigo, apresentaremos a declaração do caso em Bash e forneceremos exemplos de como ele pode ser usado em scripts de bash.
A sintaxe da declaração do caso em Bash
A sintaxe da declaração de caso em Bash é a seguinte:
Expressão de casos no padrão1) comandos1 ;; Pattern2) comandos2 ;; Pattern3) comandos3 ;; *) Default_Commands ;; ESAC12345678910 | Expressão de casos no padrão1) comandos1 ;; Pattern2) comandos2 ;; Pattern3) comandos3 ;; *) Default_Commands ;; ESAC |
A palavra -chave do caso indica o início da declaração do caso, e a palavra -chave dentro separa a expressão a ser testada da lista de padrões. Cada padrão é fechado entre parênteses e seguido por uma lista de comandos a serem executados se o padrão corresponder à expressão. O semicolon duplo (;;)
indica o final de cada lista de comando. O *)
O padrão corresponde a qualquer expressão que não corresponda a nenhum dos padrões anteriores, e os defensores do Default_Comandos são executados nesse caso.
Usando a declaração do caso em Bash
A declaração de caso em Bash é particularmente útil quando você deseja comparar uma variável com uma lista de valores possíveis. Aqui está um exemplo que mostra como você pode usar a instrução CASE para verificar o valor da variável de ambiente de usuário $:
caso $ usuário em root) eco "você está conectado como root.";; ubuntu) eco" você está conectado como Ubuntu.";; *) eco", você está conectado como um usuário desconhecido.";; ESAC12345678 | caso $ usuário em root) eco "você está conectado como root.";; ubuntu) eco" você está conectado como Ubuntu.";; *) eco", você está conectado como um usuário desconhecido.";; ESAC |
Neste exemplo, a expressão que está sendo testada é o valor do $ Usuário variável de ambiente. Os padrões são os valores possíveis de $ Usuário (raiz e ubuntu), e o padrão padrão é o *)
padrão, que corresponde a qualquer valor que não seja raiz ou ubuntu.
Declaração do caso com argumentos da linha de comando
Você também pode usar a instrução CASE para processar argumentos da linha de comando em um script bash. Aqui está um exemplo que mostra como usar a instrução CASE para lidar com diferentes opções de linha de comando:
enquanto getopts "A: B: C:" OPT; do caso $ opt em a) eco "a opção A foi aprovada com argumento $ optarg" ;; b) eco "a opção B foi aprovada com o argumento $ optarg" ;; c) Echo "Opção C foi aprovado com o argumento $ optarg" ;; *) eco "Opção inválida: -$ optarg" ;; ESAC feito123456789101112 | enquanto getopts "A: B: C:" OPT; do caso $ opt em a) eco "a opção A foi aprovada com argumento $ optarg" ;; b) eco "a opção B foi aprovada com o argumento $ optarg" ;; c) Echo "Opção C foi aprovado com o argumento $ optarg" ;; *) eco "Opção inválida: -$ optarg" ;; Esacdone |
Neste exemplo, o getopts Comando é usado para processar as opções da linha de comando. A declaração do caso é usada para lidar com cada opção (a, b e c) e seu argumento correspondente. O padrão padrão (*)
é usado para lidar com quaisquer opções inválidas.
Declaração de caso com expressão regular
As expressões regulares usadas na declaração do caso estão incluídas em colchetes quadrados ([])
. Isso ocorre porque estamos usando classes de caracteres para combinar com diferentes tipos de caracteres. O +
sinal após o segundo padrão ser usado para corresponder a uma ou mais ocorrências do padrão anterior (neste caso, letras minúsculas). Expressões regulares podem ser bastante complexas e há muito mais recursos e opções que você pode usar no Bash para combinar com os padrões.
Aqui está um exemplo de como você pode usar expressões regulares com a declaração de caso em Bash:
#!/bin/bash leia -p "Enter uma string:" str case $ str em [a-z] [0-9]) eco "A sequência começa com uma letra minúscula e termina com um número.";; [a-z] [a-z]+) eco" A sequência começa com uma letra de maiúsculas e é seguida por letras minúsculas.";; [0-9]+) eco" A sequência contém apenas números.";; *) eco" a string não corresponde a nenhum dos padrões.";; ESAC123456789101112131415161718 | #!/bin/bash leia -p "Enter uma string:" str case $ str em [a-z] [0-9]) eco "A sequência começa com uma letra minúscula e termina com um número.";; [a-z] [a-z]+) eco" A sequência começa com uma letra de maiúsculas e é seguida por letras minúsculas.";; [0-9]+) eco" A sequência contém apenas números.";; *) eco" a string não corresponde a nenhum dos padrões.";; ESAC |
Neste exemplo, estamos usando expressões regulares para combinar com diferentes padrões de strings. O primeiro padrão corresponde às cordas que começam com uma letra minúscula e terminam com um número, como A1, B2, e assim por diante. O segundo padrão corresponde às cordas que começam com uma letra de maiúsculas e são seguidas por uma ou mais letras minúsculas, como olá, mundo e assim por diante. O terceiro padrão corresponde às seqüências que contêm apenas números, como 123, 4567, e assim por diante. O padrão padrão corresponde a qualquer string que não corresponda a nenhum dos padrões anteriores.
Quando o script é executado, ele leva ao usuário a inserir uma string. A string é então testada contra os diferentes padrões usando a instrução CASE. Se um padrão corresponder, a mensagem correspondente será exibida. Se nenhum dos padrões corresponde, a mensagem padrão será exibida.
Conclusão
A declaração de caso em Bash é uma alternativa poderosa e eficiente para usar várias declarações if-then. Ele permite testar uma variável contra uma lista de valores possíveis e executar diferentes comandos com base no padrão de correspondência. A declaração do caso é particularmente útil quando você deseja processar argumentos da linha de comando ou comparar uma variável com uma lista de valores possíveis. Ao usar a instrução CASE, você pode escrever mais conciso e legível
- « Como alterar o caminho de dados padrão do MongoDB no Linux
- Como copiar uma tabela de partição GPT para outro disco usando SGDISK »