私はこの状態に問題があります:
echo ${0##*/} # result: bady
my if: if [[ "$(pgrep -c "${0##*/}")" -eq 1 ]]... check OK!
edit if: if [[ "$(pgrep -c "bady")" -eq 1 ]]... check problem!
なんで?
私はこの状態に問題があります:
echo ${0##*/} # result: bady
my if: if [[ "$(pgrep -c "${0##*/}")" -eq 1 ]]... check OK!
edit if: if [[ "$(pgrep -c "bady")" -eq 1 ]]... check problem!
なんで?
二重引用符があります。次のように変更します。
if [[ "$(pgrep -c bady)" -eq 1 ]]
これを試して :
if (( $(pgrep -c bady) == 1 ))
整数を引用する必要はありません。
注:((...))
は算術コマンドであり、式がゼロ以外の場合は終了ステータス 0 を返し、式がゼロの場合は 1 を返します。副作用 (割り当て) が必要な場合は、"let" の同義語としても使用されます。http://mywiki.wooledge.org/ArithmeticExpressionを参照してください。
カウントが 1 であることを本当に気にしますか?それとも、「一致」と「一致しない」を区別するだけで、カウントがたまたま 1 になるだけですか? の終了ステータスをチェックしてpgrep
、一致が発生したかどうかを確認できます。
if pgrep "${0##*/}"; then