문제는 다음과 같습니다
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