我正在尝试在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:
答案 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