![Bash if 文 [: `] がありません エラー](https://rvso.com/image/57213/Bash%20if%20%E6%96%87%20%5B%3A%20%60%5D%20%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%20%E3%82%A8%E3%83%A9%E3%83%BC%20.png)
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