Bash if 语句 [: missing `]' 错误

cok*_*ude 59 bash shell-script test

我在使用 bash 时遇到问题。我试图将命令放入if语句中,然后将其与字符串进行比较。

这完美地工作。

echo $(ipcs | grep Shared | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

当我把它放在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
Run Code Online (Sandbox Code Playgroud)

我尝试了==, =, 并且-eq因为我不确定该使用哪一个。

Yan*_*ann 82

你的missing ]'错误是因为你在其间需要一个空间"Shared"和],太行应该是if [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then。