Detect OS from Bash script and notify user

Graham picture Graham · May 24, 2012 · Viewed 9.2k times · Source

Using bash, I want to find the operating system and notify the user. I tried:

OS='uname -s'
echo "$OS"
if [ "$OS" == 'Linux' ]; then
    echo "Linux"
else 
    echo "Not Linux"
fi

I just get

uname -s 
Not Linux

on the terminal, which is wrong. How do I correctly set the string to what uname returns?

Thanks

Answer

William Pursell picture William Pursell · May 24, 2012

Rather than single quotes, you probably meant to use backticks:

OS=`uname -s`

but you really want

OS=$(uname -s)

Also, rather than an if statment, which will eventually become an if/else series, you might consider using case:

case $( uname -s ) in
Linux) echo Linux;;
*)     echo other;;
esac