在if语句中使用grep

时间:2015-07-10 06:01:59

标签: shell if-statement grep

我是shell脚本编写的初学者,需要一个脚本来检查进程的状态并给我输出'运行'什么时候开始运行'什么时候下来

我尝试了下面的一个,但它不起作用:

if [ -s `/opt/reds/recycle.sh status | grep "pid"` ];
then
    echo "running"
else
    echo "not running"
fi

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:5)

if语句更改为:

if /opt/reds/recycle.sh status | grep "pid"
then
    ...
fi

你可能想要沉默的grep:

-q安静运行 -s来取消错误消息(此处不需要,因为grep正在从stdin获取输入。

通常,使用if检查命令的退出状态:

if command;then
   ...
fi

答案 1 :(得分:2)

如果recycle.sh脚本完全正确实现,则应设置其退出代码以指示状态。

如果是这种情况,您应该能够观察到当状态正常时(意味着,服务正在运行)它返回零,否则返回非零。

然后,您根本不需要grep

if /opt/reds/recycle.sh status >/dev/null; then
    echo running
else
    echo not running
fi

正确编写的脚本可能还有--query选项或类似内容(--quiet--silent--script?),允许在此构造中使用它而不重定向输出