Declaração de caso Bash Sintaxe e exemplos

Declaração de caso Bash Sintaxe e exemplos

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 ;; ESAC
12345678910Expressã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.";; ESAC
12345678caso $ 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 feito
123456789101112enquanto 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.";; ESAC
123456789101112131415161718#!/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