Shell数组
shell中数组的使用
数组是一个很有用的数据结构,经常使用的功能有初始化,遍历,查找,获取数组长度等操作
一、初始化
小括号中使用空格分开的数据结构就是一个数组,也可使用下标添加元素
arr=(1 2 3)
arr[3]="yum"
二、输出数组
echo ${arr[*]} # 也可以使用*代替
三、遍历数组
for e in ${arr[*]
do
echo ${e}
done
四、获取指定索引元素
echo ${arr[1]}
五、获取数组长度
echo ${#arr[*]}
六、关联数组
声明关联数组
declare -A user
定义数组
user[name]='jack'
user[age]=18
七、对关联数组的遍历
for循环遍历
for u in ${!user[@]}
do
echo "user's ${u} is : ${user[$u]}
done
结果是:
user's name is : jack
user's age is : 18
备注:#{!user[@]}获取的是关联数组的所有下标值组成的数组
shell通过自定义分隔符分隔数组
#!/bin/bash
a="hello,world,nice,to,meet,you"
#要将$a分割开,先存储旧的分隔符
OLD_IFS="$IFS"
#设置分隔符
IFS=","
#如下会自动分隔
arr=($a)
#恢复原来的分隔符
IFS="$OLD_IFS"
#遍历数组
for s in ${arr[@]}
do
echo "$s"
done
变量$IFS存储着分隔符,这里我们将其设为逗号 "," OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认。
arr=($a)用于将字符串$a按IFS分隔符分割到数组$arr
${arr[0]} ${arr[1]} ... 分别存储分割后的数组第1 2 ... 项
${arr[@]}存储整个数组。
${!arr[@]}存储整个索引值:1 2 3 4 ...
${#arr[@]} 获取数组的长度。