- 默认从0开始索引;也可以单独(像字典一样)pid[35420]=httpd -k ssl,
- 只能是一维的
- bash4.0增加了关联数组
数组赋值:
declare -a myarray声明数组
- 一次一个(可以定义稀疏数组)
numberarray[0]=zero
numberarray[1]=one
numberarray[3]=three
- 一次全部
students=( Python Java Php C )
stat=( $(cat /proc/$$/stat) )
先将$IFS设置成换行符 IFS=" " hosts=( `cat /etc/hosts` )逐行读取文件
shs=( *.sh ) for sh in "${shs[@]} #将当前目录的sh文件放到目录 do echo $sh done
- 按索引
主要用于创建稀疏数组
arr=( [0]=zero [2]=two [3]=three [7]=seven)
- 从输入读取
read -a dice
while IFS=: read -a userdetails do : done < /etc/passwd
[lixn@Fedora24 bash_learn]$ readarray -n 4 -s 2 food 读入数组 -O定义初始的索引值 -n最大行数 -s从输入的开头跳过几行
访问
${shs[0]}
${ shs [@] }
循环遍历
for name in ${students[@]}
当数组中值带有空格时,需要使用双引号,在for循环遍历时要使用"${array[@]}" (不带引号和使用*有区别)
数组长度${#students[@]} 或 ${#students[*]}
${#students}返回第一个索引对应的值得长度
${#students[1]}
索引可以使用变量
${shs[@]:0:1}从0开始取一个,并不和索引对应
${shs[@]:3}从3开始的所有
关联数组
declare -A beatles声明关联数组
3 declare -A beatles
4 beatles=( [singer]=John [bassist]=Paul [drummer]=Ringo [guitarist]=George )
5
6 for instrument in ${!beatles[@]}
7 do
8 echo "The ${instrument} is ${beatles[$instrument]}"
9 done
数组操作
1)数组复制
hobbies=( "${array[@]}" ) 通过赋值复制,但不适用于稀疏数组
2)向数组追加元素
通过复制方法追加hobbies=( "${array[@] diving} )
使用索引追加hobbies[${#hobbies[@]}}]=rowing
组合两个数组array2+=("${array1[@]}")
3)从数组中删除元素
赋空值得到的一个稀疏数组array[3]= 此时使用${array[3]+"Item 3 is set"}, 有返回Item... ${array[3]?string}
unset array[3] 此时使用${array[3]+"Item 3 is set"}, 返回空,无效
array=清除第一个元素;unset array 清除数组