Estou recebendo um erro ao usar sh, mas não bash. Alguma ideia do porquê?
$ 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
Você tem um bash hashbang e está executando o script com sh. O POSIX sh não suporta arrays e, embora ainda funcionem em alguns sistemas, não há garantia de tal, daí o erro sobre os parênteses.
Use
bash test.sh
ou apenas torne-o executável e deixe o hashbang decidir o interpretador.Além disso, 1 sempre será igual a 1, portanto, toda a sua construção é desnecessária.