プログラムが実行されていることを確認し、適切なタスクを実行する単純な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
。