[ "$str" ] || { echo "This is my usage statement"; exit 1; }
Isso usa test , denotado por [...] . Em sua forma mais simples, como usado aqui, ele apenas testa se a string não está vazia (retornando sucesso / true) ou vazia (retornando falha / false). O operador de controle, || , executa a instrução que segue somente se a instrução anterior retornou false.
Presumi que, se o usuário não inserisse um str não vazio, você desejaria sair com um código de falha depois de emitir a instrução de uso. Caso contrário, remova o exit 1 .
Se você tiver algo mais complexo para fazer, use uma instrução if mais formal:
if [ "$str" ]
then
echo "This is my usage statement"
# do other stuff....
exit 1
fi
O acima deve funcionar em qualquer shell POSIX incluindo dash ( /bin/sh ) e bash .
Outros testes
Aqui estão dois testes relacionados (ambos exigem bash ):
[ "${str//[^[:digit:]]/}" ] || { echo "You entered no numbers"; exit 1; }
E
[ "${str//[^[:alpha:]]/}" ] || { echo "You entered no letters"; exit 1; }