当运行以下代码时:
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}
会扩展为空。