如何使用 while 循环执行此操作

如何使用 while 循环执行此操作

问题是:

grep对于任何 Firefox 实例的输出ps aux,如果 Firefox 已在运行,则在新选项卡中打开链接,如果 Firefox 未运行,则启动 Firefox 并打开链接。

这里需要注意的是,我提到 count 变量大于 1,因为ps aux | grep firefox它本身就是一个将被列出的进程,所以除此之外的任何其他实例。当我运行以下脚本时,它进入循环,正确的逻辑是什么?

#!/bin/bash
count=0
while [[ $(ps aux | grep firefox) ]]
do
    count=$((count+1)) ;
    if ( count -gt 1 )
        then    
            nohup firefox --new-tab "mega.nz" &
        else
            nohup firefox "mega.nz" &
    fi
done

while编辑:感谢下面的评论和答案,他们帮助我通过使用下面提到的 thrig 和 Deathgrip 完全摆脱了循环pgrep,但是我如何通过while循环实现这一点,或者让我知道这是否不能用循环执行while

答案1

你为什么不只想要这样的东西:

#!/bin/bash
count=0
if [[ $(pgrep firefox) ]]
then    
    nohup firefox --new-tab "mega.nz" &>/dev/null &
else
    nohup firefox "mega.nz" &>/dev/null &
fi

您的脚本已编辑,但仍不确定在什么条件下要打破循环:

#!/bin/bash
count=0
while [[ $(ps aux | grep firefox) ]]
do
    count=$((count+1)) ;
    if [ $count -gt 1 ]
        then    
            nohup firefox --new-tab "mega.nz" &
            break
        else
            nohup firefox "mega.nz" &
    fi
done

相关内容