Shell 入门(二):数组与函数
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
# 自定义函数库
参考资料: