
次のコードを実行すると:
DEAD_PROCESS_STATE=$(ps -o state | grep -i z | wc -l)
if [ ${DEAD_PROCESS_STATE} -gt 0 ]
then
echo "..."
else
echo "..."
fi
次のメッセージが表示されます
line 12: [: -gt: unary operator expected
12行目は、
if [ ${DEAD_PROCESS_STATE} -gt 0 ]
何が問題なのかよくわかりません。ゼロを一重引用符で囲んでみましたが、それでもうまくいきません。どこに間違いがあるかわかる人はいますか? コードは引き続き実行され、設定した正しい電子メール アラートなどが送信されます。このメッセージが表示される原因が何なのか知りたいだけです。
答え1
次のコマンド ラインを使用します。
if [ -gt 0 ]
${PROCESS_STATE} は初期化されていない変数であるため、何も展開されません。
このため、次のようなものを使用することをお勧めします。
if [ "${PROCESS_STATE}" -gt 0 ]
正しい数の引数を使用していることを確認します。
ところで、テキストにタイプミスがないか確認すると、何も${PROCESS_STATE}
展開されない理由がわかります。