Quando você executar ./redscript
, pgrep -x redscript
corresponderá ao processo desse script, então check_running
terá um PID. Você pode colocar um set -x
no script ou usar #! /bin/bash -x
como o shebang para verificar isso.
Eu tenho um script bash simples que verifica se um programa está sendo executado e as ações em conformidade.
#!/bin/bash
check_running=$(pgrep -x redshift)
if [[ -n "$check_running" ]]; then
echo "1"
else
echo "0"
fi
Se eu executar o script normalmente (./script), ele sempre retornará 1. Mas se eu usar "bash -x script", ele retornará o resultado correto
❯ bash -x redshift
++ pgrep -x redshift
+ check_running=
+ [[ -n '' ]]
+ echo 0
0
Eu tenho um script similar verificando se o openvpn está em execução e ele retorna o valor correto via execução regular.
Aqui está na íntegra:
~/.config/polybar/scripts
❯ pgrep -x redshift
~/.config/polybar/scripts
❯ ./redshift
1
~/.config/polybar/scripts
❯ bash -x redshift
++ pgrep -x redshift
+ check_running=
+ [[ -n '' ]]
+ echo 0
0
O que estou fazendo de errado?