-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}會擴展為空。

相關內容