我正在阅读 shell 脚本书,但在数组部分,我陷入了困境。当我声明数组时像这样运行脚本:
sh hello.sh
它向我显示了错误,即使在 ZSH 中也是如此:
one.sh: 2: Syntax error: "(" unexpected
当我跑步时像这样./hello.sh
,它就像一个魅力。
这是脚本
#!/bin/bash
myarr=(on two three four five)
echo "${myarr[1]}"
exit 0
笔记: 请问为什么不起作用sh
。我是 shell 的新手!
答案1
这样做的原因是 Bourne Shell( sh
) 不支持数组(不是您想要的这种方式)。因此请勿使用sh
、保留bash
、、等ksh
。zsh
您可以在以下位置找到更多信息这个答案
Bourne shell 或 POSIX sh 语言规范不支持数组。或者更确切地说,它们只有一个数组:位置参数($1、$2、$@,因此每个函数也有一个数组)。
f run as将独立于 shebang 和当前 shellsh hello.sh
进行读取。sh