首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pgrep条件语句语法

Pgrep条件语句语法
EN

Stack Overflow用户
提问于 2017-10-26 06:30:31
回答 1查看 516关注 0票数 0

如果在bash脚本中执行if-then语句,如下所示,其中:

代码语言:javascript
复制
if [ "$pgrep foo_process" ] > 0; then
other foo
fi

当foo_process正在运行时,上面的if-语句应该产生true结果,因为

代码语言:javascript
复制
pgrep foo_process 

将大于零。但是在下面的"do while“脚本中,它没有检测到foo_process何时停止。

代码语言:javascript
复制
#!/bin/bash
if [ "$pgrep foo_process" ] > 0; then
    while [ "$pgrep foo_process" ] > 0; do
        /home/scripts/arttst.sh
        sleep 2  
    done
else
fi
exit 4

为什么?

即使使用pgrep语法来获得二进制输出(0或1),它仍然不会工作:

代码语言:javascript
复制
#!/bin/bash
#pgrep foo_process
if [ "$pgrep -f foo_process  &> /dev/null ; echo $?" ] = 0; then
    while [ "$pgrep -f foo_process  &> /dev/null ; echo $?" ] = 0; do
        bash /home/script/arttst.sh
        sleep 2  
    done
else
exit 4
fi
exit 4
EN

回答 1

Stack Overflow用户

发布于 2017-10-26 07:32:53

使用带-x开关的pgrep解决:

代码语言:javascript
复制
if pgrep -x "foo_process" > /dev/null; then
    while pgrep -x "foo_process" > /dev/null; do
      bash /home/scripts/arttst.sh
      sleep 2 
      pgrep -x "foo_process" > /dev/null
    done  
else
fi
exit 4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46943027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档