lui*_*fzs 27 arrays bash shell
我试图在Shell脚本中声明一个空数组,但我遇到了错误.
#!/bin/bash
list=$@
newlist=()
for l in $list; do
        newlist+=($l)
done
echo "new"
echo $newlist
当我执行它时,我得到了 test.sh: 5: test.sh: Syntax error: "(" unexpected
TMT*_*TMT 17
在 BASH 4+ 中,您可以使用以下内容来声明一个空数组:
declare -a ARRAY_NAME=()
然后,您可以通过以下方式附加新项目 NEW_ITEM1 和 NEW_ITEM2:
ARRAY_NAME+=(NEW_ITEM1)
ARRAY_NAME+=(NEW_ITEM2)
请注意,添加新项目时需要括号 ()。这是必需的,以便将新项目作为 Array 元素附加。如果您确实错过了 (),NEW_ITEM2 将成为附加到第一个数组元素 ARRAY_NAME[0] 的字符串。
上面的例子将导致:
echo ${ARRAY_NAME[@]}
NEW_ITEM1 NEW_ITEM2
echo ${ARRAY_NAME[0]}
NEW_ITEM1
echo ${ARRAY_NAME[1]}
NEW_ITEM2
接下来,如果您执行了(注意缺少的括号):
ARRAY_NAME+=NEW_ITEM3
这将导致:
echo ${ARRAY_NAME[@]}
NEW_ITEM1NEW_ITEM3 NEW_ITEM2
echo ${ARRAY_NAME[0]}
NEW_ITEM1NEW_ITEM3
echo ${ARRAY_NAME[1]}
NEW_ITEM2
感谢@LenW 纠正我的追加操作。
kon*_*box 14
用bash运行它:
bash test.sh
看到错误,似乎你真的用破折号运行它:
> dash test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected
只有这次你可能使用了它的链接(/ bin/sh - >/bin/dash).
我发现以下语法更具可读性.
declare -a <name of array>
有关更多详细信息,请参阅Bash初学者指南:10.2.数组变量.