web-dev-qa-db-fra.com

Bash if instruction [: manquant `] 'erreur

J'ai des problèmes avec bash. J'essaie de mettre une commande dans une instruction if puis de la comparer à une chaîne.

Cela fonctionne parfaitement.

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

Lorsque je le mets dans une instruction if, j'ai des problèmes.

$ 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

J'ai essayé ==, =, et -eq parce que je ne savais pas lequel utiliser.

45
cokedude

Votre erreur missing ]' Est due au fait que vous avez besoin d'un espace entre "Shared" Et ], La ligne doit donc être if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then.

65
Yann