我收到错误"array.sh:3:array.sh:语法错误:"("意外"

Mis*_*u4u 4 arrays bash shell ubuntu

我写了以下代码:

#!/bin/bash
#Simple array
array=(1 2 3 4 5)

echo ${array[*]}
Run Code Online (Sandbox Code Playgroud)

我收到错误:array.sh:3:array.sh:语法错误:"("意外

从我从谷歌那里得知,这可能是因为Ubuntu现在没有默认采用"#!/ bin/bash"这一事实......但是我又添加了这条线但错误仍然存​​在.

我也尝试过bash array.sh但没有运气!它打印空白.

我的Ubuntu版本是:Ubuntu 14.04

Kei*_*son 17

鉴于该脚本:

#!/bin/bash
#Simple array
array=(1 2 3 4 5)

echo ${array[*]}
Run Code Online (Sandbox Code Playgroud)

并假设:

  • 它位于当前目录中的一个文件中array.sh;
  • 你做完了chmod +x array.sh;
  • 你有一个足够新版本的bash /bin/bash(你报告你有4.3.8,这当然是新的);
  • 你正确执行它

那应该没有任何问题.

如果通过键入来执行脚本

./array.sh
Run Code Online (Sandbox Code Playgroud)

系统会注意该#!/bin/bash行并使用执行脚本/bin/bash.

如果您通过键入以下内容执行它:

sh ./array.sh
Run Code Online (Sandbox Code Playgroud)

然后它将使用执行它/bin/sh.在Ubuntu上,/bin/sh通常是一个符号链接/bin/dash,一个支持数组的Bourne-like shell .这将为您提供您报告的错误消息.

用于执行脚本的shell不受您当前使用的shell或将哪个shell配置为登录shell /etc/passwd或等效的shell的影响(除非您使用source.命令).

在您自己的答案中,您说您通过使用chsh更改默认登录shell来解决问题/bin/bash.这本身不应该有任何影响.(/bin/bash无论如何,它是Ubuntu上的默认登录shell;你之前已将其更改为其他内容吗?)

什么是必须发生的是,你改变你使用命令sh ./array.sh./array.sh而不自知.

尝试运行sh ./array.sh,看看是否得到相同的错误.