• 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
    
    
    # 自定义函数库
    
    

    参考资料:

  • 相关阅读:
    Linux内核从原理到代码详解
    linux内核研究-8-块设备I/O层
    《Linux内核分析》课程总结
    Nginx 重写规则指南1
    Nginx初探
    Nginx源码分析:3张图看懂启动及进程工作原理
    nginx源码分析 +redis的那些事儿
    I/O 模型及其设计模式
    高并发性能调试经验分享
    myawr
  • 原文地址:https://www.cnblogs.com/linkworld/p/15063632.html
Copyright © 2020-2023  润新知