whileループを使用してこれを行う方法

whileループを使用してこれを行う方法

問題は次のとおりです。

grepFirefox インスタンス出力の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

おすすめ記事