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


# 自定义函数库


参考资料:

原文地址:https://www.cnblogs.com/linkworld/p/15063632.html