-gt: コード実行時に単項演算子が期待されるメッセージ

-gt: コード実行時に単項演算子が期待されるメッセージ

次のコードを実行すると:

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}展開されない理由がわかります。

関連情報