Estoy tratando de guardar la salida pgrep -f "instance" dentro de una variable en un script bash. Por alguna razón no funciona: aquí está el código:

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
}

Lo he probado de diferentes formas, entre comillas simples y dobles. Además, tampoco esto funciona:

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

Tenga en cuenta que la variable process_check regresa correctamente y definitivamente está funcionando. Creo que el problema es que este campo está al final de la línea y puede contener un carácter \n, es por eso que agregué un tr en la var process_check.

¿Alguna idea?

Esta es la salida de los registros:

process to check: ****"instance"****
pid:
2
Vargan 4 feb. 2015 a las 20:05

2 respuestas

La mejor respuesta

Encontré una manera de responder a esta pregunta:

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

Espero que otras personas encuentren esto útil.

0
Vargan 13 mar. 2015 a las 12:58

Bueno, en mi caso no le gustaron los argumentos que estaba tratando de transmitir.

pgrep -f "example" # working
pgrep -f "-f -N example" # not working
0
aexl 29 ago. 2018 a las 20:32