homework 4

一、使用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

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值