Sed finding itself and throwing off script results

Viewed 104

The script:

#!/bin/bash

SERVICE="$1"
RESULT=`ps -a | sed -n /${SERVICE}/p`
MEM=$(ps aux | sort -rk +4 | grep $1 | grep -v grep | awk '{print      $4}' | awk 'NR == 1')

if [ "${RESULT:-null}" = null ]; then
echo "$1 is NOT running"
else
echo "$MEM"
fi

if [ "$MEM" -ge 1 ]; then
mailx -s "Alert: server needs to be checked"    me@admins.com
fi

The problem with the ps output piped to sed is even if no process is running it finds itself:

ps aux | sed -n /nfdump/p
root      30724  0.0  0.0 105252   884 pts/1    S+   14:16   0:00 sed -n /process/p

and them my script bypasses the expected result of "service is not running" and goes straight to echo'ing $MEM, which in this case will be 0.0. Does sed have a grep -v grep eqivalent to get itself out of the way?

2 Answers
Related