shell 的数组和函数

数组
  • 定义

    ary="a b c str"     # 定义字符串
    ary=(a b c str)     # 定义字符数组
    
  • 参数说明

    • ${ary[@]}${ary[*]}
      • 返回:数组中的全部元素
      • 结果:a b c def
    • ${ary[0]}
      • 返回:数组中的第一个元素
      • 结果:a
    • ${#ary[@]}${#ary[*]}
      • 返回:数组元素总个数
      • 结果:4
    • ${#ary[3]}
      • 返回:第 4 个元素的长度,即 def 的长度
      • 结果:3
    • ary[3]=abcde
      • 将数组中第 4 个元素重新定义为 abcde
  • 判断数组中是否包含某个元素

    ary=(1 2 3)
    a=2
    if [[ "${ary[@]}" =~ "$a" ]];then
      echo "a in ary"
    else
      echo "a not in ary"
    fi
    
函数
  • 特殊字符的用途
    $#	 传递到脚本或函数的参数个数
    $*	 以一个单字符串显示所有向脚本传递的参数
    $$	 脚本运行的当前进程ID号
    $!	 后台运行的最后一个进程的ID号
    $@	 与 $* 相同,但是使用时加引号,并在引号中返回每个参数
    $-	 显示 Shell 使用的当前选项,与 set 命令功能相同
    $?	 显示最后命令的退出状态。一般用来获取上一个返回值
    
  • 简单的实例
    demoFun(){
      echo "这是一个 shell 函数!"
    }
    demoFun   #调用方法
    
  • return 的实例
    funWithReturn(){
      echo "输入第一个数字: "
      read num1
      echo "输入第二个数字: "
      read num2
      echo "两个数字分别为 $num1$num2 !"
      return $(($num1+$num2))
    }
    funWithReturn             #函数的调用
    echo "两个数字之和为 $? !"  #返回值通过 $? 来获得
    
    ##############   输出的结果   ##############
    ##  输入第一个数字:
    ##  12
    ##  输入第二个数字:
    ##  34
    ##  两个数字分别为 12 和 34 !
    ##  两个数字之和为 46 !
    ##############      END     ##############
    
  • 带参数的实例
    funWithParam(){
      echo "第一个参数为 $1 ."
      echo "第二个参数为 $2 ."
      echo "第十个参数为 $10 ."
      echo "第十个参数为 ${10} ."
      echo "第十一个参数为 ${11} ."
      echo "参数总数有 $# 个."
      echo "作为一个字符串输出所有参数 $* ."
    }
    funWithParam 1 2 3 4 5 6 7 8 9 34 73
    
    ##############   输出的结果   ##############
    ## 第一个参数为 1 .
    ## 第二个参数为 2 .
    ## 第十个参数为 10 .
    ## 第十个参数为 34 .
    ## 第十一个参数为 73 .
    ## 参数总数有 11 个 .
    ## 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 .
    ##############      END     ##############
    
    • 在函数体内部,通过 $n 的形式来获取参数的值。例如,$1 表示第一个参数,$2 表示第二个参数…
    • $10 不能获取第十个参数,获取第十个参数需要 ${10}。当 n>=10 时,需要使用 ${n} 来获取参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值