Eu sei que há uma maneira de fazer isso, mas os resultados da pesquisa na Internet sempre são ruins com essa pesquisa -
Eu quero fazer:
if [[ ! -z "$var" ]]; then
# ....
fi
mas nunca me lembro, acho que é assim:
if [[ -p "$var" ]]; then
# ....
fi
ou assim:
if [[ -n "$var" ]]; then
# ....
fi
alguém pode fornecer uma boa resposta que apareça nos mecanismos de pesquisa, espero que se eu editar o título para ser o ideal, também ajude.
Você quer o
-n
teste ("true se o comprimento da string fornecida for diferente de zero"), que é o oposto do-z
teste ("true se o comprimento da string fornecida for zero").O
-p
teste é algo completamente diferente ("true se o arquivo fornecido existir e for um pipe nomeado").Esta informação está disponível para você em um shell interativo
bash
digitandoque lhe dará a documentação para o
test
utilitário embutido (que[
é outra variante de; vejahelp [
, e que[[
usa os mesmos testes que; vejahelp [[
). Você também pode dar uma olhada nobash
manual do seu sistema (man bash
), onde isso está documentado na seção intitulada " EXPRESSÕES CONDICIONAIS ".Seu código seria, portanto, um dos
Dito isso, não vejo nada de errado em
se você, por exemplo, deseja certificar-se de que o valor está vazio e deseja gerar uma mensagem de erro se não estiver vazio. O código serviria então para documentar qual é a sua intenção: "Se isso não estiver vazio , há algo errado". Isso é uma questão de gosto.