我在 16.04 中尝试过,但不起作用。摘自:https://stackoverflow.com/a/8880633/2771043。
编辑:显然,如果您将其复制并粘贴到终端而不是脚本文件上,这就可以工作。如何让它在 .sh 文件上以相同的方式工作?
declare -a arr=("element1" "element2" "element3")
for i in "${arr[@]}"
do
echo "$i"
done
我明白了
old.sh: 2: old.sh: Syntax error: "(" unexpected
如果我去掉括号,我会得到
old.sh: 2: old.sh: declare: not found
old.sh: 5: old.sh: Bad substitution
答案1
如果在脚本的开头添加 crunchbang 行以强制 shell 解释器使用该bash
语法而不是默认使用旧sh
语法,则此方法有效。(对我来说,即使没有 crunchbang 行,方法也能正常工作,但出于许多原因,使用 crunchbang 行是个好主意。)
我创建了该文件arraytest
。
#!/bin/bash
declare -a arr=("element1" "element2" "element3")
for i in "${arr[@]}"
do
echo "$i"
done
然后我使其可执行并执行它。
chmod ugo+x arraytest
$ ./arraytest
element1
element2
element3