i want to write if statment as following :-

if [$x == "string"]

then

echo "ok"

fi

but the following error appear

./bash_if.sh[6]: [0: not found.

link|improve this question

I don't see how a question about bash scripting would be off-topic here. – mfinni Dec 30 '10 at 22:40
feedback

1 Answer

up vote 7 down vote accepted

[ needs a space after it because [ is actually a command (/usr/bin/[ on Linux, though bash has a built-in version that it uses). Without the space, bash converts $x to the value, then tries to run the command [0, just as if you had typed lssomedir or echohi.

Also, if you are testing strings, you should put quotes around $x:

if [ "$x" == "string" ]

Otherwise, if $x is empty or unset, you will get an error because without the quotes, after "expanding" $x, it will look like

if [ == "string" ]
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.