/ / Pgrep podmienený príkaz syntax - bash, grep

Syntax podmieneného vyhlásenia Pgrep - bash, grep

Ak robíte príkaz if-then v bashovom skripte, ako je tento, kde:

if [ "$pgrep foo_process" ] > 0; then
other foo
fi

Keď je foo_process spustený, vyššie uvedené if-vyhlásenie by malo mať za následok skutočný výsledok, pretože pid sa vrátil

pgrep foo_process

bude väčší ako nula. Ale nižšie "do while" skript, nie je detekovať, keď je zastavený foo_process.

#!/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

Prečo?

Dokonca aj keď použijete syntax pgrep na získanie binárneho výstupu (buď 0 alebo 1), stále nebude fungovať:

#!/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

odpovede:

0 pre odpoveď č. 1

Riešenie pomocou pgrep s prepínačom -x:

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