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
どちらを使用するかわからなかったため。
_missing ]'
_エラーは、_"Shared"
_と_]
_の間にスペースが必要なため、行はif [ "$(ipcs | grep Shared | awk '{print $2}')" == "Shared" ]; then
である必要があります。