【发布时间】:2018-08-30 04:32:08
【问题描述】:
我正在尝试将pgrep -f "instance" 输出保存在 bash 脚本的变量中。由于某种原因它不起作用:
这是代码:
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:
【问题讨论】:
-
ps -ef | grep \"instance\"是否表明您确实有一个正在运行的进程在其命令行某处包含单词“instance”(带引号)?我怀疑你那里有一些额外的引号,可能来自get_component_param_value的输出... -
我尝试使用单引号、无引号或双引号,但始终相同。无论如何,命令
pgrep -f "instance"在服务器上完美运行,我希望这会正常运行即使在命令行中。如果我打印命令并且没有多余的引号