Instrução Bash if [: erro `]' ausente

Instrução Bash if [: erro `]' ausente

Estou tendo problemas com o bash. Estou tentando colocar um comando em uma ifinstrução e compará-lo com uma string.

Isso funciona perfeitamente.

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

Quando coloco isso em uma ifdeclaração, 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 -eqporque não tinha certeza de qual usar.

Responder1

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

informação relacionada