美文网首页
shell-function

shell-function

作者: 你好_请关照 | 来源:发表于2019-10-25 16:35 被阅读0次

1、了解函数

(1)什么是函数

函数其实就是一堆命令的合集,用来完成特定功能的代码块,你可以对他进行自定义命名,并且可以在脚本中任意位置使用这个函数,只需要填写函数名称就可以了

(2)函数的使用

  • 使用函数可以让代码模块化,便于代码复用,同时增加脚本的可读性
  • 函数和变量类似,必须先定义才可以调用,如果定义不调用,则不会被执行

2、 定义函数的方式

方式一

[root@node3 /server/scripts]# cat function1.sh 
#!/bin/bash

# 方式一

meminfo (){

    command1
 
    command2

    command3
}

方式二

#!/bin/bash

# 方式二

function 函数名 {

    command1 
    
    command2

    command3 
}

3、函数使用举例

示例(1)函数基本使用

[root@node3 /server/scripts]# cat function3.sh 
#!/bin/bash


meminfo () {

    echo "hello world"
}


meminfo  #函数直接调用即可
[root@node3 /server/scripts]# sh function3.sh 
hello world
[root@node3 /server/scripts]# 

示例(2) 函数中使用位置变量

[root@node3 /server/scripts]# fun2() { echo "hello,$1"; }
[root@node3 /server/scripts]# fun2 
hello,
[root@node3 /server/scripts]# fun2 tt
hello,tt
[root@node3 /server/scripts]# 

示例(3)函数中使用位置变量


[root@node3 /server/scripts]# fun2() { echo "hello,$*"; }
[root@node3 /server/scripts]# fun2 
hello,
[root@node3 /server/scripts]# fun2  tt1 ttt2 tt3 tt4
hello,tt1 ttt2 tt3 tt4
[root@node3 /server/scripts]# 

(4) 对函数中的变量赋值

[root@node3 /server/scripts]# cat function4.sh 
#!/bin/bash

#使用变量对函数赋值
meminfo (){
    
    echo $num

}
num=10

meminfo 
[root@node3 /server/scripts]# sh function4.sh 
10
[root@node3 /server/scripts]# 

示例(5) 函数传参传,传递多个参数

[root@node3 /server/scripts]# cat function5.sh 
#!/bin/bash

# 函数传参,传递多个位置参数
info() {    
    
 echo $1    

}

info $1 #接收第一个位置参数,传入函数算第一个参数
info $2 #接收第二个位置参数,传入函数算第一个参数
info $3 #接收第三个位置参数,传入函数算第一个参数
[root@node3 /server/scripts]# sh function5.sh 10 20 30
10
20
30
[root@node3 /server/scripts]# 

示例(6) 函数传参,传递多个参数

[root@node3 /case/scripts/fun]# cat fun05.sh 
#!/usr/bin/bash
fun_1(){
    echo "$1" "$1" "$3" #函数接收传递三个参数
}
#rc=$(fun_1 10 20 30)   #传递固定的值
rc=$(fun_1 $1 $2 $3)    #传递可变的值
echo "传递参数的值为,$rc"
[root@node3 /case/scripts/fun]# 
[root@node3 /case/scripts/fun]# sh fun05.sh 20 30 40 
传递参数的值为,20 20 40
[root@node3 /case/scripts/fun]# 

示例(7) 函数传参,传递多个参数

[root@node3 /case/scripts/fun]# cat fun06.sh 
#!/usr/bin/bash
fun_1(){
    echo "$num1" "$num2" "$num3"
}
num1=$1 #将脚本位置参数一的值传递给变量num1
num2=$2 #将脚本位置参数二的值传递给变量num2
num3=$3 #将脚本位置参数三的值传递给变量num3


rc=$(fun_1) #将函数执行的结果保存至rc变量中,便于后续echo输出
echo "传递参数的值为,$rc"
[root@node3 /case/scripts/fun]# sh fun06.sh 20 30 40 
传递参数的值为,20 30 40
[root@node3 /case/scripts/fun]# 

4、函数状态返回

shell 的函数返回值,也算是退出的状态。在shell中值echo和return两种方式

  • return:使用return返回值,只能返回1-255的整数,函数使用return返回值,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1,0表示成功,1表示失败。

  • echo: 使用echo返回值,使用echo可以返回任何字符串结果,通常用于返回数据,比如一个字符或者列表值

举例函数返回值的使用

根据函数的返回值来判断下面的脚本

[root@node3 /case/scripts/fun]# cat fun09.sh 
#!/usr/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

#根据函数返回值进行判断
case $? in
    0)
            echo "你输入的数字是,$num,大于0小于10"
        ;;
    1)
        echo "你输入的数字是,$num,大于10小于20"
        ;;
    2)
        echo "你输入的数字是,$num,大于20小于30"
        ;;
    *)
        echo "输入错误..."

esac

[root@node3 /case/scripts/fun]# 


相关文章

  • shell-function

    1、了解函数 (1)什么是函数 函数其实就是一堆命令的合集,用来完成特定功能的代码块,你可以对他进行自定义命名,并...

网友评论

      本文标题:shell-function

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