gpt4 book ai didi

arrays - 在 Debian 8.4 中创建数组变量时出错

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:18 26 4
gpt4 key购买 nike

我有一个非常基本的 shell 脚本,包含

#!/bin/sh
NAME[0]="Hello"
echo ${NAME[0]}

所以当我运行这个脚本时,出现了一个错误

./test.sh: 2: ./test.sh: NAME[0]=Hello: not found
./test.sh: 3: ./test.sh: Bad substitution

基本上我浏览了一些教程,发现这是声明数组的基本方法。所以我很困惑为什么这是一个错误。有什么想法吗?

最佳答案

您正在以 #!/bin/sh 启动您的脚本,它有一个到 dash 的软链接(soft link)(当前版本的 sh 符合 POSIX 1003.2 和 1003.2a shell 规范)和 dash 不支持数组。从 debian 8 开始,dash 已成为默认 shell,因此如果您运行 ls -la/bin/sh,输出将是 /bin/sh -> dash

但是 bash 仍然是默认的登录 shell,只是更改了 shell 脚本中使用的默认/bin/sh。所以如果你在终端上运行你的代码,它会工作得很好。有关为什么在 Ubuntu 中进行此切换的更多信息,请参见 here .

如果你想在你的脚本中使用数组,那么你必须以 #!/bin/bash 开始你的脚本

所以如果像这样修改你的脚本就可以完美运行

#!/bin/bash
NAME[0]="Hello"
echo ${NAME[0]}

关于 Dash as Sh 的更多信息 DashAsBinSh

关于arrays - 在 Debian 8.4 中创建数组变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com