什么是“@”的含义, 代码:
#!/bin/bash
array[0]=1
array[1]=2
array[2]=3
array[3]=4
array[4]=5
#work
for num in ${array[@]}
do
echo $num
done
#not work
for num in array
do
echo $num
done
在循环中,为什么要使用$ {array [@]}而不是$ array,thx
答案 0 :(得分:1)
这是该语言定义的语法。这就是它的工作原理。在man bash
中阅读相关内容,搜索标题为“数组”的部分。这是相关部分:
可以使用$ {name [subscript]}引用数组的任何元素。 需要大括号以避免与路径名扩展冲突。如果 下标是@或*,单词扩展为name的所有成员。这些 只有当单词出现在双引号内时,下标才有所不同。如果 单词是双引号,$ {name [*]}扩展为单个单词 每个数组成员的值由IFS的第一个字符分隔 特殊变量,$ {name [@]}将名称的每个元素扩展为sep- arate word。如果没有数组成员,$ {name [@]}将扩展为 没有。如果双引号扩展发生在一个单词内,则 扩展第一个参数与开头部分连接起来 原始单词,并加入最后一个参数的扩展 用原始单词的最后一部分。这类似于 扩展特殊参数*和@(参见特殊参数 上文)。
答案 1 :(得分:0)
$array
不像数组一样工作。它更像是${array[0]}
。
答案 2 :(得分:0)
$array
计算数组中的第一个元素。您必须使用${array[@]}
(或更恰当地"${array[@]}"
)依次指示数组的每个元素,并以$IFS
的第一个字符分隔。