String comparison in bash is not working

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)

2

2 Answers

try

if [ "$os" = "GNU/Linux" ] 

note the spaces, and the single =.

[ is actually a program, and the rest are arguments!

3

Use = for string comparison. See:

Also, there should be a space around the square brackets and the comparison operator, i.e.

if [ "$os" = "GNU/Linux" ]; then ^ ^ ^ ^ ^ | | | | | \-\-----\-\-----------\-- (need spaces here) 
0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like