pgrep里面的bash脚本无法正常工作

时间:2015-02-04 17:05:59

标签: bash unix grep

我正在尝试在bash脚本中将pgrep -f "instance"输出保存在变量中。由于某种原因,它不起作用: 这是代码:

function check_running() {
  local component_identifier=$1
  local process_check=`get_component_param_value $component_identifier $process_check_col | tr -d '\n'`
  if [ "$process_check" != "n/a" ]; then
    log "process to check: ****""$process_check""****"
    pid=`pgrep -f $process_check`
    log "pid: " $pid
  fi
}

我尝试过不同的方式,单引号和双引号。 此外,这两个都不起作用:

pid=$(pgrep -f "$process_check")

请注意,process_check变量正确返回并且肯定有效。 我认为问题是该字段位于该行的末尾并且可能包含\n字符,这就是为什么我在process_check var中添加了tr

有什么想法吗?

这是日志的输出:

process to check: ****"instance"****
pid:

2 个答案:

答案 0 :(得分:0)

我找到了回答这个问题的方法:

echo `ps -ef | grep "$process_check" | grep -wv 'grep\|vi\|vim'` | awk '{print $2}'

我希望其他人会发现这个有用的

答案 1 :(得分:0)

嗯,就我而言,它不喜欢我试图传递的参数。

pgrep -f "example" # working
pgrep -f "-f -N example" # not working