zoukankan      html  css  js  c++  java
  • Shell数组和函数

    数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)。

    Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:

    array_name=(value1 ... valuen)

    2.数组常用操作
    1)定义一个数组: myarray=(1 2 3 4 5);
    2)读取数组的某一个元素 :

    echo ${myarray[下标值]}    
    # 注意数组名称必须使用{} 括起来, 下标值从0开始编号;

    3)数组元素的赋值:

     myarray[下标值] = xxx  ;

    4)显示数组的所有元素

    echo ${myarray[*]}

    5)获得数组的长度(元素的个数)

     echo    ${#array[@]}  
     或者    echo ${#array[*]}

    6)删除一个数组元素

     unset myarray[下标值]

    数组的遍历:
    #!/bin/bash
    
    my_arry=(a b "c","d" abc)
    echo "-------FOR循环遍历输出数组--------"
    for i in ${my_arry[@]};
    do
      echo $i
    done

    数组使用方法举例

    1.常规方法输出数组的所有元素,并进行独立的处理
    用 ${myarray[*]} 直接输出的所有元素的个数,对数组元素进行独立操作的时候,不太方便,所以有必要。

    2.有时候不知道数组中元素的个数,因此数组的长度事先是不知道的,因此此时,需要动态的扩展数组长度与空间
     
    # 执行方法:脚本名server1 server2 server3 server...
     
    # 获得所有参数存入数组
    list=($*)
    len=${#list[@]}

    shell和函数的定义

    1.linux shell 函数
    将一组命令集或语句形成一个可用的块, 这些语句块称为函数。

    2.shell 函数的组成

    函数名:函数名字,注意一个脚本中函数名要唯一,否则会引起调用函数紊乱。
    函数体: 函数内部命令的集合,实现一个业务的功能。

    3.shell 函数定义的格式

    function  函数名()  

    # function可以省略,注意()内部不带任何参数。

    {

    命令1

    命令2

    . . .

    }

    四要素:

    1. 返回类型 (强)
    2. 函数名
    3. 参数列表
    4. 函数体

    函数使用方法举例

    1.函数定义及引用实例一: 最简单的定义及引用

    function print_welcome()  #function可以去掉,注意括号里不能有参数
    {
        echo "演练函数的定义及引用方法:"
        echo "welcome,now time is `date`"
    }
    print_welcome #函数的名字,调用

    2.函数定义及引用实例二:向函数传递参数演练
    向函数传递参数就像在一般脚本中使用特殊变量1, 2 … $ 9一样,函数取得所传参数后,最好先在函数内重新设置变量保存所传的参数。
    程序功能:向函数传递一个变量值,对该变量值进行相关的运算,并输出结果。

    function sum()
    {
        a1=$1
        a2=$2
     
            
        echo "演练函数内参数的传递的方法"
        if [ $# -eq 2] #如果参数的个数等于2
            then
                echo "符合函数要求的参数个数"
                
                let sum=a1+a2
            else
                echo "函数要求的参数个数不符,请重新输入..."
        fi
        echo "$a1+$a2=$sum"
    }
    sum 10 90 #函数名和两个参数,调用

    3.函数文件和脚本文件不在同一个文件中

     

           . ./func_3.sh      #注意格式:点 空格 函数文件地址
     
  • 相关阅读:
    LVS基于DR模式负载均衡的配置
    Linux源码安装mysql 5.6.12 (cmake编译)
    HOSt ip is not allowed to connect to this MySql server
    zoj 3229 Shoot the Bullet(无源汇上下界最大流)
    hdu 3987 Harry Potter and the Forbidden Forest 求割边最少的最小割
    poj 2391 Ombrophobic Bovines(最大流+floyd+二分)
    URAL 1430 Crime and Punishment
    hdu 2048 神、上帝以及老天爷(错排)
    hdu 3367 Pseudoforest(最大生成树)
    FOJ 1683 纪念SlingShot(矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/time-to-despair/p/9995728.html
Copyright © 2011-2022 走看看