Bash if 文 [: `] がありません エラー

Bash if 文 [: `] がありません エラー

bash で問題が発生しています。ステートメントにコマンドを入れてif、それを文字列と比較しようとしています。

これは完璧に動作します。

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

それを声明文に書くと、ifいくつか問題が発生します。

$ 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

どれを使えばいいかわからなかったので、、、==を試してみました。=-eq

答え1

エラーは、 とmissing ]'の間にスペースが必要なため、行は になる必要があるために発生します。"Shared"]if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then

関連情報