Esse teste não existe como em uma linguagem de alto nível, como Java ou C #, mas é relativamente fácil de construir.
Três comentários sobre sua pergunta, conforme solicitado:
1: Você não trabalha com valores literais "true" / "false" no bash; todos os comandos e construções condicionais produzem um status de saída ou resultado lógico , que é 0 (verdadeiro) ou não 0 (falso).
Trabalhe com isso, não tente reinventar a roda.
2: tente não usar nomes de parâmetros maiúsculos, a menos que sejam variáveis de ambiente; Essa é uma convenção simples que ajuda a manter seu código limpo.
3: O que, exatamente, você quer dizer com "NULL"? A cadeia literal NULL , um valor vazio ou outra coisa?
Os dois últimos conceitos não existem no bash; uma variável NULL não seria definida, o que você já está verificando.
A solução mais eficaz seria uma função que aceita uma variável (ou parâmetro, como o bash as chama), e verifica essas condições, em seguida, define o status de saída com base nisso, condensando efetivamente vários valores de verdade em um literal 0 ou 1.
Por exemplo:
is_true() { if [[ "$1" = 0 ]]; then false; elif [[ -z "$1" ]]; then false; elif [[ "$1" =~ [Ff][Aa][Ll][Ss][Ee] ]]; then false; fi; }
-
is_true "1"
rende 0, o que é verdadeiro -
is_true "false"
rende 1, o que é falso -
a=10; is_true "$a"
rende 0 -
grep -q something somefile
rende 0 sesomething
aparecer pelo menos uma vez emsomefile
.
Observe que o último exemplo mostra claramente que você NÃO PRECISA de tal construção; tudo o que acontece no bash já funciona com estes valores de verdade 0/1 básicos.
Mas eu vou admitir que você pode ter que converter a entrada de algum programa externo deformado:)