-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}注:テキストにスペルエラーがあることを確認すると、その理由と何も拡張されない理由がわかります。

おすすめ記事