symcfg show -sid $SID -pool $i -detail -thin -gb |grep "Max. Subscription Percent"
will return some line which include string Max. Subscription Percent and also Enable in same line ?
Have you tested the command and what is the output in this lines where is Max. Subscription Percent ?
If syntax is
if commandline
then
# commandline exit code is 0 = ok
echo ok
else # commandline exit code <> 0
echo not ok
fi
[ is one of the commands. So it's also [[.
But also symcfg, cp, grep, awk, .. are commands.
Ex. testing how cp works
if cp file file2 >/dev/null 2>&1
then
echo "cp done"
else
echo "cp not so ok"
fi
So something: grep output to the /dev/null - not so interesting to see.
if symcfg show ... | grep ... >/dev/null 2>&1
then
...
fi
But you can also test output of grep.
data=$(symcfg show -sid $SID -pool $i -detail -thin -gb | grep "Max. Subscription Percent" )
# grep some value and if some line include also Enable then okay.
case "$data" in
*Enable* ) echo "ok" ;;
*) echo "not ok" ;;
esac
But if line include "Max. Subscription Percent" and "Enable" in this order, then why not using grep something like
You of course can, there's no syntax error, but the way you present it won't yield a reasonable result. symcfg may output whatever it wants, if you grep for "Max Subscription Percent" the output will never be an "Enable" alone.
Why don't you grep for "pool.*Max Subscription Percent" or even "pool.*Max Subscription Percent.*Enable" (as proposed by kshji) in the first place and then work on the results file? Or, maybe, that's already what you desired?
BTW, kshji's last data evaluation could be condensed to
data=$(symcfg list -v |grep "Symmetrix Data Encryption"|head -n 1|awk '{print $5}' )
# grep some value and if some line include also Enable then okay.
case "$data" in
*Enable* ) echo "ok" ;;
*) echo "This is not ok" > /tmp/mailmessage2
mutt -s "SCRIPT TEST" my.address@domain < /tmp/mailmessage2 ;;
esac