一、使用while read line和/etc/passwd,计算用户id总和。
while read 遍历文本或文件的每一行
/etc/passwd文件中,以冒号分隔的第三列就是用户id信息
方法一:while read 定义 line 循环
sum=0;while read line;do let sum+=$line;done <<< $(awk -F: '{print $3}' /etc/passwd); echo $sum
方法二:写一个脚本定义 line 叠加
二、总结索引数组和关联数组,字符串处理,高级变量使用及示例。
数组名和索引:
# 索引的编号从0开始,属于数值索引
# 索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持
# bash的数组支持稀疏格式(索引不连续)
声明数组:
1) declare -a ARRAY_NAME #普通数组可以不事先声明,直接使用
2) declare -A ARRAY_NAME #关联数组必须先声明,再使用
注意:两者不可相互转换
# 可通过declare -a
查看所有已定义的索引数组
# 可通过declare -A
查看所有已定义的关联数组
1)索引数组
索引的编号从0开始,属于数值索引
索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持
bash的数组支持稀疏格式(索引不连续)
索引数组可通过declare -a array_name定义索引数据,也可不定义直接使用如:arr1=({1..10})
引用数组通过${array_name[index]}方式引用
索引数组可通过array_name[index]=new_value
方式修改值
通过unset array_name[index]
可删除数组元素,索引数组删除部分元素后会导致稀疏格式(索引不连续)
通过unset array_name
将删除整个数组
取出数组的所有值,索引5以后的值,和索引0开始,往后取3个值
2)关联数组
#关联数组必须先声明再使用
declare -A ARRAY_NAME
不声明直接使用会报语法错误
关联数组赋值和引用
3)字符串处理
基于偏移量取字符串
基于模式取子串
查找替换
查找删除
大小写转换
4)高级变量使用
age变量赋值时若name有值则age的值就是name的值,当name不存在时就是-右侧的字符串
若此时name值为空,则age依旧是name变量的值,就是空
三、求10个随机数的最大值与最小值。
编辑一个取10个随机数的最大值与最小值的脚本:vim run.sh