bash -x가 작동할 때 문이 잘못된 결과를 반환하는 경우 Bash 스크립트

bash -x가 작동할 때 문이 잘못된 결과를 반환하는 경우 Bash 스크립트

프로그램이 실행 중인지 확인하고 적절한 작업을 수행하는 간단한 bash 스크립트가 있습니다.

#!/bin/bash

check_running=$(pgrep -x redshift)

if [[ -n "$check_running" ]]; then
    echo "1"
    else
        echo "0"
fi

스크립트를 정상적으로(./script) 실행하면 항상 1이 반환됩니다. 하지만 "bash -x script"를 사용하면 올바른 결과가 반환됩니다.

❯ bash -x redshift
++ pgrep -x redshift
+ check_running=
+ [[ -n '' ]]
+ echo 0
0

openvpn이 실행 중인지 확인하고 정기적으로 실행하면 올바른 값을 반환하는 유사한 스크립트가 있습니다.

완료되었습니다.

~/.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

내가 뭘 잘못했나요?

답변1

이를 실행하면 ./redscript스크립트 pgrep -x redscript의 프로세스가 일치하므로 check_runningPID가 생성됩니다. set -x스크립트에 를 넣거나 이를 확인하기 위해 shebang으로 사용할 수 있습니다 #! /bin/bash -x.

관련 정보