-
Você não está usando o formato correto para
if
no bash, em especial, perdeuthen
efi
. -
$()
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 0
usando o sinal-c
para retornar o número de processos correspondentes oupgrep -f a1.php > /dev/null
usando 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.