Na ciência da computação, declarações condicionais, expressões condicionais e construções condicionais são recursos de uma linguagem de programação, que executam diferentes computações ou ações dependendo se uma condição booleana especificada pelo programador é avaliada como verdadeira ou falsa.
No Bash, as expressões condicionais são usadas pelo comando composto [[
e os comandos internos [
para testar os atributos do arquivo e realizar comparações aritméticas e de strings.
Aqui está uma lista das expressões condicionais Bash mais populares. Você não precisa memorizá-los de cor. Você pode simplesmente consultar esta lista sempre que precisar!
- Verdadeiro se o arquivo existir.
[[ -a ${arquivo}]]
- Verdadeiro se o arquivo existir e for um arquivo especial de bloco.
[[ -b ${arquivo}]]
- Verdadeiro se o arquivo existir e for um arquivo especial de caracteres.
[[ -c ${arquivo}]]
- Verdadeiro se o arquivo existir e for um diretório.
[[ -d ${arquivo}]]
- Verdadeiro se o arquivo existir.
[[ -e ${arquivo}]]
- Verdadeiro se o arquivo existir e for um arquivo normal.
[[ -f ${arquivo}]]
- Verdadeiro se o arquivo existir e for um link simbólico.
[[ -h ${arquivo}]]
- Verdadeiro se o arquivo existir e for legível.
[[ -r ${arquivo}]]
- Verdadeiro se o arquivo existir e tiver um tamanho maior que zero.
[[ -s ${arquivo}]]
- Verdadeiro se o arquivo existir e for gravável.
[[ -w ${arquivo}]]
- Verdadeiro se o arquivo existir e for executável.
[[ -x ${arquivo}]]
- Verdadeiro se o arquivo existir e for um link simbólico.
[[ -L ${arquivo}]]
- True se a variável shell varname estiver definida (foi atribuído um valor).
[[ -v ${varname}]]
- True se o comprimento da string for zero.
[[ -z ${string}]]
- True se o comprimento da string for diferente de zero.
[[ -n ${string}]]
- True se as strings forem iguais.
=
deve ser usado com o comando test para conformidade com POSIX. Quando usado com o comando[[
, ele executa a correspondência de padrões conforme descrito acima (Comandos compostos).
[[ ${string1} == ${string2}]]
- True se as strings não forem iguais.
[[ ${string1} != ${string2} ]]
- Verdadeiro se string1 classificar antes de string2 lexicograficamente.
[[ ${string1} < ${string2} ]]
- Verdadeiro se string1 classificar após string2 lexicograficamente.
[[ ${string1} > ${string2}]]
- Retorna verdadeiro se os números forem iguais
[[ ${arg1} -eq ${arg2} ]]
- Retorna verdadeiro se os números não forem iguais
[[ ${arg1} -ne ${arg2} ]]
- Retorna verdadeiro se arg1 for menor que arg2
[[ ${arg1} -lt ${arg2} ]]
- Retorna verdadeiro se arg1 for menor ou igual arg2
[[ ${arg1} -le ${arg2} ]]
- Retorna verdadeiro se arg1 for maior que arg2
[[ ${arg1} -gt ${arg2} ]]
- Retorna verdadeiro se arg1 for maior ou igual arg2
[[ ${arg1} -ge ${arg2} ]]
Como uma nota lateral, arg1 e arg2 podem ser números inteiros positivos ou negativos.
Assim como em outras linguagens de programação, você pode usar as condições AND
e OR
:
[[ test_case_1 ]] && [[ test_case_2 ]] # E
[[ test_case_1 ]] || [[ test_case_2 ]] # Ou
- Retorna true se o comando foi bem sucedido sem nenhum erro
[[$? -eq 0 ]]
- Retorna true se o comando não foi bem sucedido ou teve erros
[[$? -gt 0 ]]