zoukankan      html  css  js  c++  java
  • 05、函数与数组

    5.1函数

    格式:

    func (){
        command      
    }

    示例1:

    #!/bin/bash
    func(){
        echo "this is a function"  
    }
    
    func
    
    #执行结果
    bash test.sh
    this is a function

    Shell函数很简单,函数名后跟双括号,再跟双大括号。通过函数名直接调用,不加小括号。

    示例2:函数返回值

    #!/bin/bash
    func() {
        VAR=$((1+1))
        return $VAR
        echo "This is a function."
    }
    func
    echo $?
    
    
    # bash test.sh
    2

    return在函数中是定义状态返回值,返回并终止函数,但返回的只能是数字,类似于exit 0。

    示例3:函数传参

     
    #!/bin/bash
    func() {
        echo "Hello $1"
    }
    func world
    
    # bash test.sh
    Hello world

    通过Shell位置参数给函数传参。

    5.2 数组

    数组是相同类型的元素按一定顺序排列的集合。

    格式:

    array=(元素1 元素2 元素3 ...)

    用小括号初始化数组,元素之间用空格分隔。

    定义方法1:初始化数组
    array=(a b c)
    定义方法2:新建数组并添加元素
    array[下标]=元素
    定义方法3:将命令输出作为数组元素
    array=($(command))

    数组操作:

     
    获取所有元素
    # echo ${array[*]}  # *和@ 都是代表所有元素
    a b c
    获取数组长度
    # echo ${#array[*]}
    3
    获取第一个元素
    # echo ${array[0]}
    a
    获取第二个元素
    # echo ${array[1]}
    b
    获取第三个元素
    # echo ${array[2]}
    c
    添加元素
    # array[3]=d
    # echo ${array[*]}
    a b c d
    添加多个元素
    # array+=(e f g)
    # echo ${array[*]}
    a b c d e f g
    删除a元素
    # unset array[a]  # 用名字删除会保留元素下标
    # echo ${array[*]}
    b c d e f g
    删除第一个元素
    # unset array[1] 
    # echo ${array[*]}
    c d e f g

    数组下标是以0开始。

    示例1:讲seq生成的数字序列循环放到数组里面

     
    #!/bin/bash
    for i in $(seq 1 10); do
        array[a]=$i
        let a++
    done
    echo ${array[*]}
    # bash test.sh
    1 2 3 4 5 6 7 8 9 10
    删除数组
    # unset array

    示例2:遍历数组元素

     
    #!/bin/bash
    IP=(192.168.1.1 192.168.1.2 192.168.1.3)
    for ((i=0;i<${#IP[*]};i++)); do
        echo ${IP[$i]}
    done
    # bash test.sh
    192.168.1.1
    192.168.1.2
    192.168.1.3
  • 相关阅读:
    创建image对象出现内存不足
    错误15023:当前数据库中已存在用户或角色
    看20遍还觉得很搞笑之<麦兜故事>片段之"鱼丸粗面"
    .NET中获取CPU编号及MAC地址
    清空file控件的值
    iframe 父窗口和子窗口的调用方法
    调用javascript后gif动画停止播放
    IIS上无法播放FLV视屏的问题
    黑客和小白
    (转载)innerHTML,innerTEXT,outerHTML的区别
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12469524.html
Copyright © 2011-2022 走看看