Bash if declaración [: falta error `]'

Bash if declaración [: falta error `]'

Tengo problemas con bash. Estoy intentando poner un comando en una ifdeclaración y luego compararlo con una cadena.

Esto funciona perfectamente.

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

Cuando lo pongo en un ifcomunicado tengo algunos 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

Probé ==, =y -eqporque no estaba seguro de cuál usar.

Respuesta1

Su missing ]'error se debe a que necesita un espacio entre "Shared"y ], por lo que la línea debería ser if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then.

información relacionada