Bashからコマンドを引数として受け取る

Bashからコマンドを引数として受け取る

そのコマンドでプロセスが実行されない場合は、指定されたコマンドを実行する単一のインスタンスと呼ばれる簡単なスクリプトがあります。 elseステートメントの後にコマンドをハードコーディングすると問題なく実行されますが、ハードコーディングされたコマンドを$ 1または$ @に置き換えると、コマンドの新しいインスタンスは生成されません。そのようなコマンドを防ぐためにbashに安全メカニズムがありますか?

#!/bin/bash
if ps ax | grep -v grep | grep $1 > /dev/null;then
    wmctrl -xa $1
else
    # works fine if I switch $1 to terminator
    $1
fi

if文の部分はうまく機能します。このスクリプトを使用してプロセスを呼び出す限り、プロセスのインスタンスは1つだけ取得されます。

ベストアンサー1

Grep "シングルインスタンス"が呼び出すコマンドの名前を表示するには、grepオプションにデーモンを追加しました。一部のプログラムでは、ウィンドウマネージャにそのインスタンスがなくてもデーモンが実行されているためです。

#!/bin/bash
if ps -fp $(pgrep -d, "$1") egrep -v "single-instance|daemon" | grep $1;then
    wmctrl -xa $1
else
    $1
fi

この問題を案内してくれたMikelに感謝します。

おすすめ記事