Comando de teste Bash

Comando de teste Bash
Em Bash Shell, o comando de teste compara um elemento contra outro e retorna verdadeiro ou falso. Na script de bash, o comando de teste é parte integrante das declarações condicionais que controlam a lógica e o fluxo do programa.

Este guia demonstra como usar o comando Bash Test.

Comando de teste

O comando de teste leva um EXPRESSÃO como um argumento. Depois de calcular a expressão, o teste retorna um valor à variável Bash “$?”. Se o valor for 0, a avaliação da expressão foi verdadeira. Se o valor for 1, a avaliação da expressão foi falsa.

Existem duas sintaxes para usar o comando de teste.

$ Expressão de teste
$ [Expressão]

Observe que, no caso de "[", há um espaço nas duas extremidades do EXPRESSÃO.

Uso de teste

Aqui está um pequeno exemplo de como o comando de teste funciona. Estaremos verificando se 1 é igual a 2. Se for verdade, então a saída será "verdadeira". Caso contrário, a saída será "falsa".

$ teste 1 -eq 2 && echo “true” || eco “falso”

Vamos quebrá -lo.

  • Teste: o comando de teste.
  • 1: O primeiro elemento para comparação.
  • -Eq: Método de comparação (se os valores são iguais).
  • 2: O segundo elemento para comparação.

Se a parte do teste for verdadeira, o primeiro comando de eco será executado. Caso contrário, o segundo comando de eco será executado.

O mesmo comando pode ser expresso usando “[“.

$ [1 -EQ 2] && echo “true” || eco “falso”

Expressão

A expressão é o que dá ao comando do teste seu verdadeiro poder. O teste pode usar strings, arquivos e números inteiros para comparação. Aqui está uma lista rápida de todos os formatos de expressão de teste disponíveis.

Corda
Na programação, uma string é um conjunto de caracteres que geralmente são usados ​​para representar o texto. Por exemplo, "Hello World" no seguinte comando Echo é tratado como uma string.

$ eco “Hello World.”

O comando de teste suporta as seguintes expressões de string.

  • -n: o comprimento da corda é diferente de zero.
  • -Z: o comprimento da string é zero.
  • : O valor da string é diferente de zero (quivalente a "-n").
  • =: Ambos string_a e string_b são iguais.
  • !=: As strings string_a e string_b não são iguais.

Vamos experimentar essas expressões.

$ [-n “Hello World”] && echo “true” || eco “falso”
$ [-z “Hello World”] && echo “true” || eco “falso”
$ [“Hello World” != “Hello World”] && echo “true” || eco “falso”
$ ["Hello World" = "Hello World"] && echo "true" || eco “falso”

Inteiro

O primeiro exemplo deste guia demonstra comparação inteira. Existem mais maneiras de comparar números inteiros.

  • -Eq: INTEGER_A é igual a Integer_B.
  • -NE: INTEGER_A não é igual a INTEGER_B
  • -GE: INTEGER_A é maior ou igual a Integer_B.
  • -GT: INTEGER_A é maior que Integer_B.
  • -LE: INTEGER_A é menor ou igual a Integer_B.
  • -LT: INTEGER_A é menor que INTEGER_B.

Vamos colocar essas expressões em ação.

$ [5 -EQ 10] && echo “true” || eco “falso”
$ [5 -GT 2] && echo "true" || eco “falso”
$ [4 -le 5] && echo “true” || eco “falso”

Arquivo

Os arquivos também podem fazer parte da expressão. Aqui está a lista de expressões de arquivo suportadas.

  • -EF: ambos file_a e file_b têm dispositivo e número de inode semelhantes. Se for verdade, isso significa que os arquivos provavelmente são simplificados. Saiba mais sobre links simbólicos do Linux.
  • -NT: Em termos de data de modificação, File_A é mais recente que File_B.
  • -OT: file_a é mais antigo que o File_B.

O restante das expressões de arquivo suportado está relacionado a uma única propriedade de um único arquivo.

  • -e: file_a existe.
  • -F: File_A existe e um arquivo regular.
  • -D: file_a existe e é um diretório.
  • -R: File_A existe com permissões de leitura.
  • -W: File_A existe com permissões de gravação.
  • -x: file_a existe com permissões de execução.
  • -s: file_a existe e o tamanho do arquivo é maior que zero.
  • -O: File_A existe e o proprietário é um ID de usuário eficaz.
  • -G: File_A existe e o proprietário é um ID de grupo eficaz.
  • -h: file_a existe e é um link simbólico.
  • -L: file_a existe e é um link simbólico.
  • -B: File_A existe. É um arquivo especial de bloco.
  • -C: File_A existe. É um arquivo especial de personagem.
  • -S: file_a existe. É um soquete.

Vamos dar uma olhada em alguns exemplos.

$ [-x/usr/bin/bash] && echo $?
$ [-s /bin /bash] && echo $?
$ [-r /bin] && echo $?
$ [-e /hello_world] && echo "true" || eco "falso"

Implementando teste em scripts de bash

Até agora, demonstramos como usar o comando de teste para determinar se uma determinada condição é verdadeira ou falsa. Podemos implementar isso em scripts Bash para tomar decisões úteis.

Dê uma olhada no seguinte script curto.

#!/BIN/BASH
se [$ (whoami) = root]; então
eco "raiz"
outro
eco “não raiz”
fi

Aqui, a declaração se verificará se a condição é verdadeira ou falsa. Usando o comando de teste, podemos facilmente obter o valor booleano.

Execute o script com e sem privilégio de raiz.

$ ./fictício.sh
$ sudo ./fictício.sh

É uma demonstração simples de declaração if-else. Sinta-se à vontade para conferir as declarações Bash if-Else para obter aplicativos mais detalhados.

Pensamentos finais

O comando de teste é simples, mas poderoso. Este guia explica e demonstra várias maneiras de usar o teste. A lista completa de todas as expressões suportadas está disponível na página do homem.

$ teste man

Computação feliz!