String comparison in bash. [[: not found
How you are running your script? If you did with
$ sh myscript
you should try:
$ bash myscript
or, if the script is executable:
$ ./myscript
sh and bash are two different shells. While in the first case you are passing your script as an argument to the sh interpreter, in the second case you decide on the very first line which interpreter will be used.
[[
is a bash-builtin. Your /bin/bash
doesn't seem to be an actual bash.
From a comment:
Add #!/bin/bash
at the top of file
Is the first line in your script:
#!/bin/bash
or
#!/bin/sh
the sh shell produces this error messages, not bash
As @Ansgar mentioned, [[
is a bashism, ie built into Bash and not available for other shells. If you want your script to be portable, use [
. Comparisons will also need a different syntax: change ==
to =
.
if [ $MYVAR = "myvalue" ]; then
echo "true"
else
echo "false"
fi