-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}会扩展为空。

相关内容