2016-08-17 5 views
2

特定のプロセス$PROC_NAMEが実行されているかどうかを確認する小さなスクリプト(check_process.sh)をビルドします。存在する場合は、そのPIDを返し、そうでない場合は-1を返します。bash:commadサブダクションのpgrep

私の考えは、pgrep -f <STRING>をコマンド置換に使用することです。

私は、コマンドラインで直接このコードを実行した場合:

export ARG1=foo_name 
export RES=$(pgrep -f ${ARG1}) 
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi 

すべてがうまく行く:プロセスの状態に応じて、PIDまたは-1。

私のスクリプトcheck_process.shは、プロセスを渡すために、同じラインに加えて、余分な変数が含まれている名:

#!/bin/bash 
export ARG1=$1 
export RES=$(pgrep -f ${ARG1}) 
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi 

しかし、このコードは動作しません! プロセスは、現在、私が実行されていないプロセスをチェックするとき、私は他の何かを得るのに対し、私は、2つのPID S(プロセスのPIDと他の何かを...)を取得実行されている場合は!

私は困惑しています。何か案が? ありがとうございます!

+0

あなたはおそらくマッチング処理され、プロセスがプロセスをマッチング:) – fedorqui

+0

'のpgrep -f「$のproc_nameに"|| echo "-1" ' – Cyrus

+0

よりコンパクトなコードをありがとう。しかし、私がスクリプトでそれを使うと、私はまだ同じ問題を抱えています! – eddie

答えて

関連する問題