2.3 数组
- 数组分类
- 普通数组
- 关联数组
- 遍历数组
2.3.1 数组分类
# 普通数组: 只能使用整数作为数组索引 # 关联数组: 可以使用字符串作为数组索引,必须提前声明才能使用(对应其他编程语言的“字典”或者“Map”) # 普通数组 books=(nginx mysql shell perl lua) # 统计数组元素个数 echo ${#books[@]} # 访问数组中的第一个元素 echo ${books[0]} # 从数组 1 开始 echo ${books[@]:1} # 从数组索引 1 开始,访问两个元素 echo ${books[@]:1:2} # 访问数组中所有数据,相当于 echo ${books[*]} echo ${books[@]} # 关联数组 declare -A student_info # 声明为关联数组 student_info=([name]=zhangsan [age]=18 [skill]=shell) # 获取 name 对应的 value echo ${student_info[name]} # 获取所有的 value echo ${student_info[*]} # 获取所有的 key echo ${!student_info[*]}
2.4 函数
2.4.1 函数的定义及返回值
# 定义函数:第一种方式 function hello(){ echo "第一种函数定义的方式" } echo "-----函数开始执行-----" hello echo "-----函数执行完毕-----" # 定义函数:第二种方式 hello2(){ echo "第二种函数定义的方式" } hello2 # 示例一:统计文件行数 #!/bin/bash FILE=/etc/passwd function countLine() { local i=0 while read line do let ++i done < $FILE echo "$FILE have $i lines" } echo "Call function countLine" countLine # 函数的返回值 #!/bin/bash funcWithReturn() { echo "计算两个数字之和:" echo "输入第一个数字:" read first echo "输入第二个数字:" read second echo "输入的两个数字分别为 $first 和 $second" return $(($first+$second)) } funcWithReturn echo "输入的两个数字之和为 $?" # 函数传参 # 示例一: 计算两个数的乘积 #!/bin/bash [ $# -ne 2 ] && echo "请输入两个参数" && exit 1 let_num(){ let test="$1"*"$2" echo "第一个值是 $1" echo "第二个值是 $2" echo "两个值的乘积为:$test" } let_num $1 $2 # 自定义函数库
参考资料:
- Shell 自动化编程实战