
運行以下程式碼時:
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}
會擴展為空。