我在使用 sh 时遇到错误,但在 bash 时没有。知道为什么吗?
$ sh test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected (expecting "fi")
#!/bin/bash
if [ 1 -eq 1 ]
then
declare -a methods=(Method1 Method2 Method3)
for i in "${methods[@]}"
do
echo $i
done
else
echo not found
fi
答案1
您有一个 bash hashbang,并且正在使用 sh 运行脚本。 POSIX sh 不支持数组,虽然它们仍然可以在某些系统上工作,但不能保证这一点,因此会出现有关括号的错误。
使用bash test.sh
或者只是使其可执行,然后让 hashbang 决定解释器。
而且 1 总是等于 1,所以你的整个 if 构造是不必要的。