Como é a saída de pargs -l $PID
? Do seu código, parece que é uma única linha contendo todos os argumentos da linha de comando em um formato, por exemplo:
arg1=val1 arg2=val2
Nesse caso, você pode coletar o valor para o argumento -DnodeId
com o comando sed
:
$ ARGS="-DfirstArg=foo -DanotherArg=bar -DnodeId=1234 -DlastArg=baz"
$ echo "$ARGS" | sed -r 's/.*-DnodeId=([^ ]+).*//g'
1234
Assim, seu script pode se tornar:
PARGS=$(pargs -l $PID)
NODE='UNKNOWN'
if [ -n "$(grep "DnodeId" <(echo "$PARGS"))" ]; then
NODE=$(echo "$PARGS" | sed -r 's/.*-DnodeId=([^ ]+).*//g')
fi