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

相關內容