-
Você não está usando o formato correto para
ifno bash, em especial, perdeuthenefi. -
$()subshell possivelmente não está fazendo o que você pensa. Ele retorna o stdout do comando dentro, não o código de saída (que é normalmente o que você testa). O$(pgrep -c -f a1.php) -gt 0usando o sinal-cpara retornar o número de processos correspondentes oupgrep -f a1.php > /dev/nullusando o código de saída seria melhor.[[ ! $(pgrep -f a1.php) ]]pode funcionar neste caso, mas[[ $(pgrep -f a1.php) ]]falharia se mais de um processo correspondesse, por isso é frágil.
Tente,
if [[ $(pgrep -c -f a1.php) -gt 0 ]]; then
exit 1
fi
if [[ $(pgrep -c -f a2.php) -gt 0 ]]; then
exit 1
fi
if [[ $(pgrep -c -f a3.txt) -gt 0 ]]; then
exit 1
fi
php -f a.php; php -f b.php; sh -e a3.txt
OU ALTERNATIVAMENTE
pgrep -f a1.php > /dev/null && exit 1
pgrep -f a2.php > /dev/null && exit 1
pgrep -f a3.php > /dev/null && exit 1
php -f a.php; php -f b.php; sh -e a3.txt
Consulte o link para obter mais informações sobre a declaração if.