- 数组也是一个变量,有点特殊的变量,存储多个数据的集合就是数组。
- 不同的
shell
解释器,索引起始位置也不一样,bash
从0
开始,csh,zsh
从1
开始。
# 定义数组 $ arr=(11 22 33) # bash 解释器取出数组 0 索引的值 $ echo ${arr[0]} 11 # csh、zsh 解释器取出数组 1 索引的值 $ echo ${arr[1]} 11
@
跟*
的区别
- 变量使用
*
时,变量被""
包裹,会当成一串字符串处理。 - 变量使用
@
时,变量被""
包裹,依然当做数组处理。 - 变量在没有被
""
包裹的情况下,@
跟*
是等效的.
arr=(11 22 33) echo "---- @ 带冒号" for line in "${arr[@]}" do echo $line done echo "---- * 带冒号" for line in "${arr[*]}" do echo $line done echo "---- @ 不带冒号" for line in ${arr[@]} do echo $line done echo "---- * 不带冒号" for line in ${arr[*]} do echo $line done
- 输出结果:
---- @ 带冒号 11 22 33 ---- * 带冒号 11 22 33 ---- @ 不带冒号 11 22 33 ---- * 不带冒号 11 22 33