我的 shell 脚本中 sh 出现问题

我的 shell 脚本中 sh 出现问题

我正在阅读 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、、等kshzsh

您可以在以下位置找到更多信息这个答案

Bourne shell 或 POSIX sh 语言规范不支持数组。或者更确切地说,它们只有一个数组:位置参数($1、$2、$@,因此每个函数也有一个数组)。

f run as将独立于 shebang 和当前 shellsh hello.sh进行读取。sh

相关内容