sudoを使用するbashスクリプトでpgrepが機能しない理由を理解していません

sudoを使用するbashスクリプトでpgrepが機能しない理由を理解していません

ズームプログラムが実行されているかどうかを検出しようとしています。また、dpkgを使用してインストールするには、bashスクリプトにsudo権限が必要です。

を使用すると、pgrep -f "zoom" >/dev/null 2>&1Zoomが実行されている場合はecho $?戻りコードが0に正しく設定され、見つからない場合は1に正しく設定されます。

を使用すると、sudo2つの追加プロセス、つまり最初のプロセスと最初のプロセスの子プロセスがpgrep得られます。これはうまくいかなかったので、「ハッキング回避策」を使用する必要がありました。働いた。正規表現は、プロセスが結果に追加されないことを保証しました。sudo pgrep etc.pgrep etc.sudosudo pgrep -f "[z]oom" >/dev/null 2>&1pgrep

プロセスが実行中でない場合は1に設定され、プロセスが実行中の場合は0に設定されますsudo pgrep -f "[z]oom" >/dev/null 2>&1 ;echo $?完璧。

しかし、これをbashスクリプト(として実行sudo)に追加すると、次のようになります。

if pgrep -f "[z]oom" 2>&1 ; then
    echo $?
    echo "zoom is running"

これはもう機能しません。いつもスケーリングプロセスが実行中であることを示します。したがって、スケーリングが実行されていても常にゼロを返します。いいえラン)。

なぜそんなことですか?

ベストアンサー1

問題は-f

pgrep -x zoom >/dev/null 2>&1

おすすめ記事