有人能给我解释一下我应该如何阅读/理解这个命令吗
在这里,我不确定我是否理解了[3]的含义/作用
names=(apples [3]=orange tomatoe)这里我们说两个名字,什么是[3]和[@]
echo ${#names[3]} ${#names[@]}输出是6 3。我不明白,如果有人有时间向我解释或指出正确的手册页,那就太好了。
发布于 2016-11-03 23:17:09
第一部分演示了数组的一般赋值语法。简单的形式,
$ names=(apples oranges tomatoe)
$ echo "${!names[@]}" # Show the indices defined for the array
0 1 2将每个元素分配给从0开始的连续整数索引。如果显式地给出了一个索引,则使用该索引,并从那里连续分配后续的值。Shell数组不必是连续的;您的示例中没有定义${names[1]}和${names[2]}。
$ names=(apples [3]=orange tomatoe)
$ echo "${!names[@]}"
0 3 4在第二种情况下,您使用的是参数长度操作符。第一个命令告诉您${names[3]}的长度
$ echo "${#names[3]}" # orange has 6 characters
6第二个以@作为索引,告诉您数组的长度,即数组中有多少个值。
$ echo "${#names[@]}"
3
$ printf '%s\n' "${names[@]}"
apples
orange
tomatoehttps://stackoverflow.com/questions/40405039
复制相似问题