Reputation: 5736
Hi I'm new to bash scripting. Just wrote this simple program but it is throwing error.
#!/bin/bash
os=`uname -o`
echo $os
if ["$os"=="GNU/Linux"] ; then
echo "Linux"
else
echo "Windows"
fi
Using == or -eq for both cases I'm getting the following error and it is printing the else condn.
./ostype.sh: line 3: [GNU/Linux==GNU/Linux]: No such file or directory
Windows
Bash version : GNU bash, version 3.2.48(1)-release (x86_64-suse-linux-gnu)
Upvotes: 11
Views: 25544
Reputation: 86854
Use =
for string comparison. See: http://tldp.org/LDP/abs/html/comparison-ops.html
Also, there should be a space around the square brackets and the comparison operator, i.e.
if [ "$os" = "GNU/Linux" ]; then
^ ^ ^ ^ ^
| | | | |
\-\-----\-\-----------\-- (need spaces here)
Upvotes: 17
Reputation: 3592
try
if [ "$os" = "GNU/Linux" ]
note the spaces, and the single =
.
[
is actually a program, and the rest are arguments!
Upvotes: 40