20.3 Shell 数组 (从新手到菜鸟的Linux教程)
为什么要单独讲下数组呢? 毕竟作为脚本语言,没有关联数组和咸鱼有什么区别?
还是先从正常数组讲起吧= =
首先我们有正常的数组声明方式
array_name=(element_1 element_2 ...)
这里使用数组元素的时候就一定要加上花括号了 ${array_name[n]}
。
说好的关联数组呢?别急,先看一下 manual
Associative arrays are created using declare
-A
name.
然后就可以欢快地使用关联数组了
declare -A stock
stock["apple"]=5
stock["pear"]=2
echo We have ${stock["apple"]} apples and ${stock["pear"]} pears.
比较反人类的事情是 zsh 中数组下标是从 1 开始的。 导致我不得不在 bash 下重新测试所有脚本= =
然后赋值的时候数组下标大小是没有限制的;如果你硬要读的时候搞个负值……看个例子就懂了
array=(1 2 3)
echo \(-4\) ${array[-4]}
echo \(-3\) ${array[-3]}
echo \(-2\) ${array[-2]}
echo \(-1\) ${array[-1]}
echo \(0\) ${array[0]}
echo \(1\) ${array[1]}
echo \(2\) ${array[2]}
echo \(3\) ${array[3]}
echo \(4\) ${array[4]}
# in bash
test.sh: line 2: array: bad array subscript
(-4)
(-3) 1
(-2) 2
(-1) 3
(0) 1
(1) 2
(2) 3
(3)
(4)
# in zsh
(-4)
(-3) 1
(-2) 2
(-1) 3
(0)
(1) 1
(2) 2
(3) 3
(4)
祝各位好运