美文网首页
Shell语法(6)--方法传递参数机制

Shell语法(6)--方法传递参数机制

作者: 刘小厨 | 来源:发表于2020-05-01 12:30 被阅读0次

    函数

    • Linux Shell 中的函数和大多数编程语言中的函数一样
    • 将相似的任务或代码封装到函数中,供其他地方调用

    定义函数有两种格式:
    ①:

    name( )
    {
      command;
      cmmand2 ;
    }
    

    ②:

    [ function ] funname [ ( ) ]
    {
      action;
      [return int;]
    }
    

    举个例子:

    #!/bin/bash
    outParams1="参数一"
    outParams2="参数二"
    function test(){
            params1="局部变量1"
            params2="局部变量2"
            echo $outParams1
            echo $params1
            echo "我是函数"
    }
    #函数调用,写在函数下方,直接函数名就可以调用
    test
    

    shell语法中没有形参,我们看下如何在调用方法时传递参数:

    #!/bin/bash
    function test(){
            # 打印第一个参数
            echo $1
    }
    #调用方法传递一个参数 10
    test 10
    

    其中 $n表示第n个参数,不清楚的可以看下
    Shell语法(1)--变量的定义和使用

    传参可以通过调用方法时候传参,也可以通过脚本传参(终端执行sh文件时候传参),先看下第一种,举个栗子(阶乘):

    #!/bin/bash
    a=1
    factorial () {
    for i in `seq $1`
    do
                #let 运算符下也可以写成let a*=$i
                let a=$a*$i
    done
    
    echo "$1的阶乘 $a"
    }
    
    factorial 10
    
    #输出
    #10的阶乘 362880
    

    看下执行脚本时候传参:

    #!/bin/bash
    a=1
    factorial () {
    #这里接收的是调用方法时候传递的第一个参数
    for i in `seq $1`
    do
              let a=$a*$i
    done
    
    echo "$1的阶乘 $a"
    }
    #这里接收的是执行脚本时候的第一个参数
    factorial $1
    #终端输入
    # ./factorial.sh 5
    
    #打印结果
    5的阶乘 24
    

    提示:上述shell函数执行结果为int类型的值,也就是说大于65535的值不会正常返回,比如上述代码执行# ./factorial.sh 10 打印结果为10的阶乘 0,因为10的阶乘大于65535

    函数的返回值

    直接举个例子:

    #!/bin/bash
    fun1(){
    #将用户输入参数赋值给num
    read -p "请输入数值" num
    let 2*$num
    }
    fun1
    #$?表示上调语句的执行结果,是个状态码(0-255之间) 0表示成功
    echo "fun1返回值 $?"
    
    

    执行上述代码,输入数值10,终端输出fun1返回值 0

    # ./return.sh
    请输入数值10
    fun1返回值 0
    

    自定义返回值

    将上述代码改为:

    #!/bin/bash
    fun1(){
    read -p "请输入数值" num
    return $[ 2*$num ]
    }
    fun1
    echo "fun1返回值 $?"
    

    执行上述代码,输入数值10,终端输出fun1返回值 20,因为返回值在0-255,所以我们输入127以上 的数字不会的到正确的结果:

    # ./return.sh
    请输入数值10
    fun1返回值 20
    -----------------------
    # ./return.sh
    请输入数值200
    fun1返回值 144
    

    注意: 在Shell中函数的返回结果是,最后一条指令的执行结果!!!!!,如果我们想要返回值为字符串等类型,可以使用echo指令做为函数的最后一条命令

    示例:

    #!/bin/bash
    fun1(){
    read -p "请输入数值" num
    echo $[ 2*num ]
    }
    result=`fun1`
    echo "fun1返回值 $result"
    

    执行:

    # ./return.sh
    请输入数值200
    fun1返回值 400
    

    相关文章

      网友评论

          本文标题:Shell语法(6)--方法传递参数机制

          本文链接:https://www.haomeiwen.com/subject/vgyfghtx.html