Bash if-Anweisung [: fehlender `]'-Fehler

Bash if-Anweisung [: fehlender `]'-Fehler

Ich habe Probleme mit Bash. Ich versuche, einen Befehl in eine Anweisung einzufügen ifund ihn dann mit einer Zeichenfolge zu vergleichen.

Das funktioniert perfekt.

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

Wenn ich es in eine Aussage einfüge, ifbekomme ich einige Probleme.

$ 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

Ich habe ==, =, und ausprobiert -eq, weil ich nicht sicher war, welches ich verwenden sollte.

Antwort1

Ihr missing ]'Fehler liegt daran, dass Sie zwischen "Shared"und ein Leerzeichen benötigen ], die Zeile sollte also lauten if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then.

verwandte Informationen