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