Exemplo Bash If-Then-Else

Bash If Then Else Example



Nesta lição, veremos como podemos usar instruções If-Then-Else em scripts de ambiente Bash que escrevemos. As instruções If-Then-Else são uma ferramenta útil para fornecer uma maneira de definir o caminho de ação de um script quando algumas condições são atendidas. Vamos ver qual é a sintaxe das instruções If-Then-Else:

E seALGUNS COMANDOS;
entãoENTÃO-COMANDOS;
outroELSE-COMMANDS;
ser

No comando mostrado acima, se SOME-COMMANDS for verdadeiro ou seu status de retorno for 0, o THEN-COMMANDS será executado. Se não for o caso, ELSE-COMMANDS são executados. Em SOME-COMMANDS, geralmente fazemos algumas comparações de String ou comparação de valores na forma de inteiros. Também podemos fazer muitas operações que envolvem arquivos. Vejamos alguns exemplos de comandos primários que são usados ​​principalmente ao trabalhar com condições baseadas em arquivo:







Primário Significado
[ -para ] Retorna verdadeiro quando existe FILE.
[-b] Retorna verdadeiro quando FILE existe e é um arquivo especial de bloco.
[-c] Retorna verdadeiro quando FILE existe e é um arquivo especial de caracteres.
[-d] Retorna verdadeiro quando FILE existe e é um diretório.
[ -E ] Retorna verdadeiro quando existe FILE.
[-f] Retorna verdadeiro quando FILE existe e é um arquivo normal.
[-g] Retorna verdadeiro quando FILE existe e seu bit SGID é definido.
[-h] Retorna verdadeiro quando FILE existe e é um link simbólico.
[-k] Retorna verdadeiro quando FILE existe e seu sticky bit está definido.
[-p] Retorna verdadeiro quando FILE existe e é um canal nomeado (FIFO).
[-r] Retorna verdadeiro quando FILE existe e é legível.
[-s] Retorna verdadeiro quando FILE existe e tem um tamanho maior que zero.
[-t] Retorna verdadeiro quando o descritor de arquivo FD está aberto e se refere a um terminal.
[-você] Retorna verdadeiro quando FILE existe e seu bit SUID (definir ID do usuário) é definido.
[ -no ] Retorna verdadeiro quando FILE existe e é gravável.
[-x] Retorna verdadeiro quando FILE existe e é executável.
[-O] Retorna verdadeiro quando FILE existe e pertence ao ID de usuário efetivo.
[-G] Retorna verdadeiro quando FILE existe e pertence ao ID de grupo efetivo.
[ -A ] Retorna verdadeiro quando FILE existe e é um link simbólico.
[-N] Retorna verdadeiro quando FILE existe e foi modificado desde a última leitura.
[-S] Retorna verdadeiro quando FILE existe e é um soquete.

O THEN-COMMANDS e o ELSE-COMMANDS podem ser quaisquer operações UNIX válidas ou qualquer programa executável. Observe que o então e ser os comandos são separados por ponto e vírgula, pois são considerados elementos completamente separados de um script.



Exemplo Simples If-Then-Else

Vamos começar nossa lição com um exemplo muito simples com declarações If-Then-Else.
Aqui está um programa de amostra:



Se Exemplo

Se Exemplo





Aqui está a saída que vemos quando executamos nosso script:

$. ifelse1.sh
Os valores são iguais!
$

Usando argumentos de linha de comando

Também podemos usar argumentos de linha de comando em nossos scripts e usar o número de argumentos e os próprios valores como uma condição na instrução IF que definimos. Primeiro definimos um arquivo de texto com o seguinte conteúdo:



Meu nome é LinuxHint. Eu amo servidores, especialmente os do Ubuntu. Eles são tão
terminal!

Agora, podemos escrever um script que descobre se uma palavra ocorre em um arquivo de texto ou não. Vamos definir o script agora:

jogou fora 'Encontrando $ 1 em $ 2'
pegada $ 1 $ 2
E se [ $? -nascido 0 ]
então
jogou fora '$ 1 não encontrado no arquivo $ 2.'
outro
jogou fora '$ 1 encontrado no arquivo $ 2.'
ser
jogou fora 'Script concluído.'

Este script é muito dinâmico. Ele considera a palavra a ser encontrada e o arquivo a ser pesquisado na própria linha de comando. Agora, estamos prontos para executar nosso script:

. ifelse2.sh love hello.txt

Veremos uma saída como:

Encontrando o amornohello.txt
amor encontradono Arquivohello.txt.
Script concluído.

Verificando o número de argumentos da linha de comando

Dentro de uma instrução IF, podemos até verificar quantos argumentos de linha de comando foram passados ​​para o comando para que possamos agir sobre o mesmo:

contar=$ #
E se [ ! $ count -gt 1 ]
então
jogou fora 'Argumentos insuficientes'
outro
jogou fora 'Bom trabalho!'
ser

Vamos executar este script agora, veremos a seguinte saída:

Argumentos de linha de comando

Argumentos de linha de comando

Declarações If-Then-Elif-Else

Também podemos ter várias instruções IF no mesmo bloco para restringir o caminho de decisão que nosso programa toma para executar os comandos que definimos. Esta é a sintaxe para definir várias instruções IF em nossos scripts:

E seCOMANDOS DE TESTE;
então
COMANDOS DE RESULTADO;
elif
OUTROS COMANDOS;
então
OUTROS COMANDOS DE RESULTADO;
outro
ALTERNATE-COMMANDS;
ser

Isso parece bastante familiar e fácil de acompanhar também. Vamos definir um exemplo simples para estabelecer como a árvore funciona:

contar=$ #
E se [ $ count -eq 1 ]
então
jogou fora 'Apenas um argumento encontrado.'
elif [ $ count -eq 2 ]
então
jogou fora 'Melhor, dois argumentos encontrados.'
outro
jogou fora 'Bom trabalho, muitos argumentos encontrados!'
ser

Aqui está o que recebemos de volta com este comando:

Exemplo de If Then Elif Else

Exemplo de If Then Elif Else

Usando instruções de caso

As instruções IF-ELSE são úteis quando você tem uma grande lista de opções sobre as quais precisa decidir. Mas caso você queira realizar uma ação apenas em alguns casos de correspondência exata com o resultado, também podemos usar instruções CASE em scripts Bash. Sua sintaxe é semelhante a:

casoEXPRESSÃOnoCASO 1)COMANDOS PARA EXECUTAR;
CASE2)COMANDOS PARA EXECUTAR;
CASE2)COMANDOS PARA EXECUTAR;
...)COMANDOS PARA EXECUTAR;
*)COMANDOS PARA EXECUTAR;
esac

O último caso com * atua como o caso padrão e será executado quando nenhum dos casos definidos acima for encontrado para corresponder.

Vamos construir rapidamente um exemplo simples usando as instruções CASE:

caso '$ 1' no
1)
jogou fora 'O valor é 1.'
;;
2)
jogou fora 'O valor é 2.'
;;
3)
jogou fora 'O valor é 3.'
;;
*)
jogou fora 'Outro valor aprovado.'
esac

Cada instrução CASE é encerrada por ;; (marcas de ponto e vírgula duplas). Aqui está o que recebemos de volta com este comando:

Exemplo CASE

Exemplo CASE

Conclusão

Nesta lição, vimos como podemos usar as instruções IF-ELSE, IF-THEN-ELIF e CASE nos scripts Bash que definimos para realizar ações específicas com base em valores que existem em nossos programas ou passados ​​pelo usuário usando posicional parâmetros.