Paul Ward wrote:
... I am wanting to find multiple proccess and then produce a true exit code if they are all there and a false if they are not. ...
It might make things simple if you use ps to do the selection as well. Since you seem to know the PIDs you're looking for, you can ask ps to look for them specifically. Unfortunately, it won't return an error if any are missing, but you can have it print the ones it finds, and see if you get the same number out as you put in:
------- snip ------- #!/bin/sh
# the PIDs we want to check PIDS='2530 2514 4016 4017'
XPIDS=`ps --no-headers -o pid -p "$PIDS"`
if [ `echo "$XPIDS" | wc -l` = `echo $PIDS | wc -w` ] then echo "All PIDs present: ($PIDS)" else echo "Something's missing: need ($PIDS), found (`echo $XPIDS`)" fi ------- snip -------
I tried to stick with generic sh and avoid any bash-isms.
Here's what it looks like on a run:
$ sh -x tmp/fpids.sh + PIDS='2530 2514 4016 4017' ++ ps --no-headers -o pid -p '2530 2514 4016 4017' + XPIDS=' 2514 2530 4016' ++ echo ' 2514 2530 4016' ++ wc -l ++ echo 2530 2514 4016 4017 ++ wc -w + '[' 3 = 4 ']' ++ echo 2514 2530 4016 + echo 'Something'''s missing: need (2530 2514 4016 4017), found (2514 2530 4016)' Something's missing: need (2530 2514 4016 4017), found (2514 2530 4016)