Bash se a declaração [: ausente ']' erro [duplicado]

26

Estou tendo problemas com o bash. Eu estou tentando colocar um comando em uma instrução if e, em seguida, compará-lo a uma seqüência de caracteres.

Isso funciona perfeitamente.

echo $(ipcs | grep Shared | awk '{print $2}')

Quando coloco em uma declaração if , tenho alguns problemas.

$ if [ "$(ipcs | grep Shared | awk '{print $2}')" -eq "Shared"]; then
  echo expression evaluated as true;
else
  echo expression evaluated as false;
fi
bash: [: missing ']'
expression evaluated as false

$ if [ "$(ipcs | grep Shared | awk '{print $2}')" = "Shared"]; then
  echo expression evaluated as true;
else
  echo expression evaluated as false;
fi
bash: [: missing ']'
expression evaluated as false

$ if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared"]; then
  echo expression evaluated as true;
else
  echo expression evaluated as false;
fi
bash: [: missing ']'
expression evaluated as false

Eu tentei == , = e -eq porque não sabia qual deles usar.

    
por cokedude 09.10.2014 / 12:28

1 resposta

37

Seu erro missing ]' é porque você precisa de um espaço no intervalo entre "Shared" e ] , portanto, a linha deve ser if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then .

    
por 09.10.2014 / 12:30