I have written the following code:
#!/bin/bash
#Simple array
array=(1 2 3 4 5)
echo ${array[*]}
And I am getting error: array.sh: 3: array.sh: Syntax error: "(" unexpected
From what I came to know from Google, that this might be due to the fact that Ubuntu is now not taking "#!/bin/bash" by default... but then again I added the line but the error is still coming.
Also I have tried by executing bash array.sh
but no luck! It prints blank.
My Ubuntu version is: Ubuntu 14.04
I solved the problem miraculously. In order to solve the issue, I found a link where it was described to be gone by using the following code. After executing them, the issue got resolved.
FYI, "adhikarisubir" is my username.
After executing these commands,
bash array.sh
produced the desired result.Given that script:
and assuming:
array.sh
;chmod +x array.sh
;/bin/bash
(you report that you have 4.3.8, which is certainly new enough); andthen that should work without any problem.
If you execute the script by typing
the system will pay attention to the
#!/bin/bash
line and execute the script using/bin/bash
.If you execute it by typing something like:
then it will execute it using
/bin/sh
. On Ubuntu,/bin/sh
is typically a symbolic link to/bin/dash
, a Bourne-like shell that doesn't support arrays. That will give you exactly the error message that you report.The shell used to execute a script is not affected by which shell you're currently using or by which shell is configured as your login shell in
/etc/passwd
or equivalent (unless you use thesource
or.
command).In your own answer, you say you fixed the problem by using
chsh
to change your default login shell to/bin/bash
. That by itself should not have any effect. (And/bin/bash
is the default login shell on Ubuntu anyway; had you changed it to something else previously?)What must have happened is that you changed the command you use from
sh ./array.sh
to./array.sh
without realizing it.Try running
sh ./array.sh
and see if you get the same error.Instead of using sh to run the script,
try the following command: