Bash script se a declaração retornar resultado incorreto enquanto o bash -x funciona

0

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?

    
por Ryan 29.01.2018 / 07:42

1 resposta

1

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.

    
por 29.01.2018 / 07:51