missing ']' erro no shell script unix [duplicado]

3

Estou tentando executar um script pequeno que verifica duas variáveis para ver se elas estão vazias ou não. Eu estou recebendo a saída correta, mas se também me mostra erro por perder o parêntese direito. Eu tentei usar parênteses duplos, bem como colchetes, mas não funcionou.

var=""
non="hi"

 if ([ -z "$var"] && [ -z "$non"])
then
    echo "both empty"

else
    echo "has data"
fi

OUTPUT :

line 6: [: missing ']'
has data
    
por JavaQuest 14.09.2015 / 19:09

2 respostas

8

Você precisa de um espaço entre "$ non" e], e não precisa de ():

if [ -z "$var" ] && [ -z "$non" ]
    
por 14.09.2015 / 19:12
3

Como Andy Dalton disse em sua resposta, você precisa de um espaço entre "$ non" e o colchete de fechamento entre parênteses ] assim:

[ -z "$non" ]

Eu só quero adicionar um pouco de motivação porque isso é necessário. No bash, os parênteses quadrados são comandos (você pode tentar man [ para ver, é o manual do comando teste ), então você precisa do espaço para bash para descobrir quais comando que você está invocando.

    
por 14.09.2015 / 19:27