八、shell编程-数组
1.数组简介
数组:用一个固定的字符串,代替多个不固定字符串。
变脸:用一个固定的字符串,代替多个不固定字符串。
2.数组类型
普通数组:只能使用整数作为数组索引
关联数组:可以使用字符串作为数组索引
普通数组


echo "${name:3:4}" 意思是name变量中从索引3开始显示4个
这叫变量切片,不常用



编写数组方法
hero=(aaa bbb ccc ddd)
hero=([0]=aaa [1]=bbb [2]=ccc)
查看指定值
echo ${hero[2]} ccc
echo ${hreo[@]:1:2} bbb ccc
查看所有值
echo ${hero[*]} aaa bbb ccc
echo ${hero[@]} aaa bbb ccc
查看所有索引
echo ${!hero[*]} 0 1 2
查看所有普通型数组
declare -a
关联数组


索引是文字型的
declare -A hero 要先声明,而且数组要先声明再创建,已有数组名无法转化成关联数组
hero=([up]=aaa [center]=bbb )


关联数组是无序的
还有其他赋值方法(一次赋予多个值)
array3=(`cat /etc/passwd`)

array4=(tom jack alice "bash shell")

colors=($red $bule)

array6=(1 2 3 4 5 "linux shell" [20]=echoo)

还有其他赋值方法(一次赋予一个值)
array7[0]=pear
array7[1]=apple
array7[2]=orange

declare -A ass_array1
ass_array1[good]=pear
ass_array1[well]=apple
ass_array1[bad]=orange

例子


优化输出


优化输出


统计性别
vim sex.txt


把文件的内容用输入重定向传给while,是一行行的读取

for是以空格为分隔符读取
完整答案


给关联数组添加元素

统计

完成/etc/passwd中shell的统计

awk -F: 这里的-F是自定义切割符,我们选择的是以“:”为切割符取第7个值

切片


浙公网安备 33010602011771号