Usando $ BASHPID no comando grep

0

Estou tentando excluir o PID do subshell dos resultados retornados pelo pgrep. Observe que o nome do arquivo é o mesmo que o nome passado para o pgrep. Por que definir uma variável igual a BASHPID permite que 'grep -v' funcione abaixo? Estou usando o Bash 4.1.2.

myprocess.sh

#!/bin/bash

# === Fails ===
pids=$(pgrep -f myprocess | grep -v ${BASHPID} | grep -v $$)
echo "$pids"

echo "-------"

# === Works ===
pids=$(bashpid=${BASHPID}; pgrep -f myprocess | grep -v ${bashpid} | grep -v $$)
echo "$pids"
    
por ishmael 27.09.2014 / 00:40

1 resposta

2

Comandos no lado direito de um pipe são executados em um subshell - portanto, seu $ BASHPID é diferente.

    
por 27.09.2014 / 00:45