У меня проблема с 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
.