Shell编程之函数

2019-12-25  本文已影响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

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

上一篇 下一篇

猜你喜欢

热点阅读