Comandos no lado direito de um pipe são executados em um subshell - portanto, seu $ BASHPID é diferente.
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"