if [ `scselect | grep "*.*Automatic"` ]; then
Means: run the scselect command, and grep for *.*Automatic which is an invalid regular expression. The asterisk is a modifier to the previous atom ("thing") in the expression, so it can't be the first thing.
If you want to match an actual asterisk, you have to escape it with a backslash.
Spiff suggested this, but used double-quotes which will not pass the backslash on, you have to use single quotes, or a double-backslash. Confused yet? :)
So that would give:
if [ `scselect | grep '\*.*Automatic'` ]; then
Which means, run the scselect command, find the line that matches *.*Automatic and output it, then use that as the arguments to the 'test' command (also known as '[').
The test command does not take a line of output from scselect as an argument.
What you really mean to do is to not use the test command at all:
if scselect | grep '\*.*Automatic'; then
But as Spiff mentioned, for some silly reason, scselect sends its output to stderr not stdout.
So now you end up with:
if scselect 2>&1 | grep '\*.*Automatic'; then
Which works great, but still sends that line that grep is giving us to STDOUT, which we probably don't want in our output, so let's fix that:
if scselect 2>&1 | grep '\*.*Automatic' >/dev/null 2>&1; then
And... there you go.