美文网首页
Shell编程之函数

Shell编程之函数

作者: 你好树洞先生 | 来源:发表于2019-12-25 08:43 被阅读0次

    关于函数的介绍和使用

    1.什么是函数?

    函数其实就是一锥命令的合集,用来完成特定功能的代码块,

    你可以对它进行自定义命令,并且可以在脚本中任意位置使用

    这个函数,要使用定义的函数,只需要填写函数名称就可以了。

    2.函数的作用:

    (1)使用函数可以让代码模块化,便于代码的复用,

    同时增加脚本的可读性。

    (2)函数和变量类似,必须先定义才可以调用,

    如果定义不调用则不会被执行。

    ============================================

    3.如何定义Shell函数,可以通过如下两种方式进行定义。

    #方式一:

    函数名(){

      command1

      command2

      ...

      commandN

    }

    #方式二

    function 函数名{

        command1

        command2

        ...

        commandN

    }

    ============================================

    例子:

    #!/bin/bash

    #第一张定义函数的方式

    function fun01{

        echo "这是第一个函数的输出..."

    }

    #第二张定义函数的方式

    fun02(){

        echo "这是第2个函数的输出..."

    }

    fun01

    fun02

    ============================================

    4.如何调用Shell函数,直接使用函数调用即可。

    在函数内部也可以使用$1,$2..$n的方式传递参数

    #1.命令行定义函数

    [root@test shell]# fun1() {echo "hello,Shell";}

    hello,shell

    #2.命令行调用函数

    [root@test shell]# fun1

    hello,Shell

    #3.给函数传递参数

    [root@test shell]# fun2() [ echo "hello,$1";]

    [root@test shell]# fun2 linux

    hello,Linux

    #4.给函数传递多个参数{$*,接收所有的参数传递}

    [root@test shell]# fun3() {echo "hello,$*";}

    [root@test shell]# fun3 zhangsan lisi wangwu

    hello,zhangsan lisi wangwu

    =============================================

    5.函数传参示例,使用变量方式传递固定值

    #!/bin/bash

    fun_1(){

      echo "$num"

    }

    num=10  #传递参数

    fun_1  #调用函数

    [root@test shell]# sh fun_1.sh  #执行脚本

    10 

    ============================================

    例子:

    #1.执行脚本传递位置参数$1,传递的值是oldboy

    [root@test shell]# sh fun02.sh liu

    #!/bin/bash

    fun_1(){

      #3.执行函数,最后使用echo输出$num的值 --->liu

      echo "$num"

    }

    #2.将脚本的$1传递的位置参数付给num变量 --->num=liu

    num=$1 #传递参数

    fun_1  #调用函数

    ===========================================

    6.函数参数示例,传递多个函数参数

    #!/bin/bash

    fun_1(){

      echo "$1" "$2" "$3"

    }

    #rc=$(fun_1 10 20 30 ) #传递固定的值

    rc=$(fun_1 $1 $2 $3)  #传递可变的值

    [root@test shell]# sh fun_4.sh 10 20 30 #执行脚本

    传递参数的值为,10 20 30

    ============================================

    (2)[root@test shell]# cat fun_5.sh

    #!/bin/bash

    fun_1(){

      echo "$num1" "$num2" "$num3"

    }

    num1=$1 #将脚本位置参数一的值传递给变量num1

    num2=$2 #将脚本位置参数二的值传递给变量num2

    num3=$3 #将脚本位置参数三的值传递给变量num3

    rc_$(fun_1) #将函数执行的结果保存至rc变量中,便于后续echo输出

    echo "传递参数的值为,$rc"

    ====================================

    (3)[root@test shell]# cat cale_6.sh

    #!/bin/bash

    cale (){

        case $2 in

            +)

        echo $1 + $3 = $(( $1 + $3 ))

    ;;

    -)

        echo $1 - $3 = $(( $1 - $3 ))

                    ;;

                /)

                  echo $1 / $3 = $(( $1 / #3 ))

                    ;;

                \*)

                  echo $1 * $3 =$(( $1\*$3 ))

        esac

    }

    cale $1 $2 $3

    ==================================================

    7.函数状态返回:

    Shell的函数返回值,也算是退出的状态。在shell中只有echo、return

    两种方式。

    (1)使用return返回值:只能返回1-255的整数,函数使用return返回值,

    通常只是用来供其他地方调用获取状态,因此通常仅返回0或1,

    0表示成功,

    1表示失败。

    (2)使用echo返回值:使用echo可以返回任何字符串结果,通常用于返回数据,

    比如一个字符串值或者列表值。

    示例:1.shell函数echo、return返回值

    [root@test shell]# cat fun01_echo_return.sh

    #!/bin/bash

    fun_echo_return(){

        echo 100    #返回函数执行后的数据

    return 1    #返回函数执行后的状态码(放置最后)

    }

    return='fun_echo_return'

    echo "函数的状态是:$?"

    echo "函数的返回值是:$result"

    [root@test shell]# sh fun01_echo_return.sh

    函数的状态码是:1

    函数的返回值是:100

    ============================================

    示例2:判断文件是否存在

    代码:

    #!/bin/bash

    file=/etc/passwd

    t_file(){

        if [ -f $file ];then

          return 20

    else

          return 30

    fi

    }

    t_file

    if [ $? -eq 20 ];then

          echo "文件存在"

    elif [ $? -eq 30 ];then

          echo "文件不存在"

    fi

    =================================

    案例:shell函数返回场景练习,例子:猜数字游戏。

    (1)如果用户输入的数值大于0且小于10 则返回0.

    (2)如果用户输入的数值大于等于10且小于20则返回1

    (3)如果用户输入的数值大于等于20且小于30,则返回2

    (4)输入其余数值则返回3

    代码:

    #!/bin/bash

    checknum(){

      read -p "请输入对应的数字:" num

      if [ $num -ge 0 -a $num -lt 10 ];then

          return 0

      elif [ $num -ge 10 -a $num -lt 20 ];then

          return 1

      elif [ $num -ge 20 -a $num -lt 30 ];then

          return 2

      else

          return 3

      fi

    }

    #调用函数,函数执行后会通过return返回对应的状态码

    checknum

    #根据函数返回值进行判断

    if [ $? -eq 0 ];then

      echo "你输入的数字是,$num,大于0小于10"

    elif [ $? -eq 1];then

        echo "你输入的数字是,$num,大于10小于20"

    elif [ $? -eq 2 ];then

        echo "你输入的数字是,$num,大于20小于30"

    fi

    ============================================

    相关文章

      网友评论

          本文标题:Shell编程之函数

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