프로그램이 실행 중인지 확인하고 적절한 작업을 수행하는 간단한 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_running
PID가 생성됩니다. set -x
스크립트에 를 넣거나 이를 확인하기 위해 shebang으로 사용할 수 있습니다 #! /bin/bash -x
.