• shell函数-3


    1、shell函数

    1.1、shell函数定义

    对于重复出现的代码,在shell中可以定义函数,然后在指定的地方调用即可。便于代码复用,提高开发效率。

    定义函数的语法如下:

    1 function 函数名(){
    2  语句块
    3  返回值
    4 }

    示例:

    1 function hello(){
    2 echo "Hello"
    3 }

    2、调用函数

    通过函数名称来调用已定义的函数

    1 function_name

    两个数相加的函数与定义:

     1 #定义函数add
     2 function add(){
     3     a=1
     4     b=3
     5     val=`expr ${a} + ${b}`
     6     echo "${a} + ${b} is :${val}"
     7          
     8 }
     9 #调用函数
    10 add

    输出:

    1 1 + 3 is :4

    1.3、带参数的函数

    上面的add函数a,b的值已写死,可用性太差。下面传入参数来重写add函数

     1 #定义函数add
     2 function add(){
     3     #$1表示第一个参数
     4     #$2表示第二个参数
     5     #$n表示第n个参数
     6     a=$1
     7     b=$2
     8     val=`expr ${a} + ${b}`
     9     echo "${a} + ${b} is :${val}"
    10          
    11 }
    12 #调用函数
    13 add 1 3
    14 add 2 25

    输出:

    1 1 + 3 is :4
    2 2 + 25 is :27

     1.4、函数返回值

    1 #函数返回值不是必须的,与一般语言的返回值含义不同
    2 #语法 return status_code,表示函数的退出状态
    #退出状态是个数字,一般成功为0,失败为1
    #$? 用来获取上一个命令的退出状态或返回值。
    1 #调用函数
    2 add 1 2
    3 echo "add func exit code is : $?"

    输出:

    1 add func exit code is : 0

    假如把add函数执行成功的退出状态定义为200,重写add函数并判断是否执行成功

    示例:

     1 #定义函数add
     2 function add(){
     3         #定义成功状态码
     4     ok_code=200
     5     err_code=100    
     6     a=$1
     7     b=$2
     8     val=`expr ${a} + ${b}`
     9         if [ $? -eq 0 ]
    10     then
    11             return ${ok_code}
    12     else
    13             return ${err_code}
    14     fi
    15          
    16 }
    17 #调用函数
    18 add 1 e
    19 if [ $? -eq 200 ]
    20 then
    21     echo "add func run sucess."
    22 else
    23     echo "add func run fail."
    24 fi

    输出:

    1 expr: 非整数参数
    2 add func run fail.

    1.5、如果获取函数的处理结果

    a、使用全局变量

     1 #定义函数add
     2 function add(){
     3         #定义成功状态码
     4     ok_code=200
     5     err_code=100    
     6     a=$1
     7     b=$2
     8     val=`expr ${a} + ${b}`
     9         if [ $? -eq 0 ]
    10     then
    11             return ${ok_code}
    12     else
    13             return ${err_code}
    14     fi
    15          
    16 }
    17 #调用函数
    18 add 1 2
    19 echo "add 1 2 result is : ${val}"

    输出:

    1 add 1 2 result is : 3

    b、在函数内部echo 出变量,在函数外部用$(func_name arg1  argn)捕捉

    1 #定义函数add
    2 function add(){    
    3     a=$1
    4     b=$2
    5     val=`expr ${a} + ${b}`
    6         echo ${val}
    7 }
    8 #使用$(add 1 2)捕捉结果
    9 echo "add 1 2 result is : $(add 1 2)"

    输出:

    1 add 1 2 result is : 3

    推荐使用第二种

    1.6、break和continue

    break用于退出循环,退出后循环不再执行。

    cotinue用于退出本次循环,继续执行下一次循环。

    break示例:

     1 #寻找1~10之间第一个偶数
     2 #找到后即跳出循环,不再继续
     3 for i in `seq 1 10`
     4 do
     5     tmp=`expr ${i} % 2`
     6     if [ ${tmp} -eq 0 ];then
     7     echo $i
     8         #continue
     9     break
    10         fi
    11 done

    break输出:

    1 2 

    continue示例:

     1 #寻找1~10之间所有的偶数
     2 for i in `seq 1 10`
     3 do
     4     tmp=`expr ${i} % 2`
     5     if [ ${tmp} -eq 0 ];then
     6     echo $i
     7         continue
     8         #下面这句echo永远不会被执行
     9     echo "statement after cotinue"
    10         fi
    11 done

    cotinue输出:

    1 2
    2 4
    3 6
    4 8
    5 10
  • 相关阅读:
    UIView
    UISwitch
    UIButton
    label标签的属性
    sublime 生成网页头文件
    Xcode快捷键
    Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载
    用谷歌浏览器来当手机模拟器
    DDD:谈谈数据模型、领域模型、视图模型和命令模型
    MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
  • 原文地址:https://www.cnblogs.com/webDepOfQWS/p/10654287.html
Copyright © 2020-2023  润新知