我正在编写一个基本脚本来练习使用数组。当我运行脚本时,我会得到错误,但是当我在终端中运行相同的命令时,它就会执行。
#!/bin/bash
declare -a StringArray
StringArray=("blue" "green")
for val in ${StringArray[@]}; do
echo $val
done我已经给了脚本可执行的许可。我遗漏了什么?

发布于 2022-03-13 15:36:26
使用命令sh script.sh,您可以尝试使用sh运行脚本。sh与dash有符号链接。dash是Ubuntu的标准命令解释器。它是一个与bash不同的外壳,本质上具有更小的特性,但速度非常快。Bash更适合交互式使用,因此仍然是交互式提示符的默认解释器。在这些命令解释器之间的差异上有一个很好的答案。
相反,使用
bash script.sh在正确的外壳下执行。
如果您将脚本放在路径中的目录中并使其可执行,只需键入script.sh即可在命令提示符下运行它。这时,#!/bin/bash告诉系统应该使用bash。当以bash script.sh或sh script.sh的形式运行脚本时,该shebang行只是一个注释,根本没有解释。
https://askubuntu.com/questions/1397332
复制相似问题