I am getting error “array.sh: 3: array.sh: Syntax error: ”(“ unexpected”

前端 未结 3 1662
感动是毒
感动是毒 2020-11-28 13:19

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: a

相关标签:
3条回答
  • 2020-11-28 13:36

    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.

    chsh -s /bin/bash adhikarisubir
    
    grep ^adhikarisubir /etc/passwd
    

    FYI, "adhikarisubir" is my username.

    After executing these commands, bash array.sh produced the desired result.

    0 讨论(0)
  • 2020-11-28 13:43

    Given that script:

    #!/bin/bash
    #Simple array
    array=(1 2 3 4 5)
    
    echo ${array[*]}
    

    and assuming:

    • It's in a file in your current directory named array.sh;
    • You've done chmod +x array.sh;
    • You have a sufficiently new version of bash installed in /bin/bash (you report that you have 4.3.8, which is certainly new enough); and
    • You execute it correctly

    then that should work without any problem.

    If you execute the script by typing

    ./array.sh
    

    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:

    sh ./array.sh
    

    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 the source 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.

    0 讨论(0)
  • 2020-11-28 13:57

    Instead of using sh to run the script,

    try the following command:

    bash ./array.sh
    
    0 讨论(0)
提交回复
热议问题