Shell编程-09-Shell中的函数
发布时间:2020-12-15 23:12:20 所属栏目:安全 来源:网络整理
导读:? ? 函数可以简化程序的代码量,达到更好的代码复用度,因此会让程序变得更加易读、简洁和易修改。其作用就是将需要多次使用的代码整合到一块,使其成为一个整体,然后通过函数名即可完成调用。 基本语法 function functionName () { 语句 return n} 其他简
? ? 函数可以简化程序的代码量,达到更好的代码复用度,因此会让程序变得更加易读、简洁和易修改。其作用就是将需要多次使用的代码整合到一块,使其成为一个整体,然后通过函数名即可完成调用。 基本语法function functionName () { 语句 return n } 其他简化写法如下 function functionName { 语句 return n } 或 functionName () { 语句 return n }
函数执行
functionName
functionName arg1 arg2 > - Shell中的位置参数($1/$2.../$#/$?/[email?protected])均可以做为函数的参数进行传递 > - $0比较特殊,仍然是父脚本的名称 > - 此时父脚本的参数会临时被函数的参数所掩盖或隐藏 > - 函数的参数变量是在函数体内里面进行定义 函数的执行总结如下:
函数示例1、示例1:调用函数 [[email?protected] Test]# cat testfunction.sh #!/bin/bash # first function function HelloWorld() { echo "Hello world" } # second function Welcome() { echo "Welcome to Shanghai" } # third function function HelloShell { echo "Hello Shell" } # invoke functions HelloWorld # 调用函数 Welcome HelloShell [[email?protected] Test]# bash testfunction.sh Hello world Welcome to Shanghai Hello Shell 2、示例2:从文件中调用函数 [[email?protected] Test]# cat invokefunction.sh function Sum () { for((i=1;i<=100;i++)) do ((sum=sum+i)) done echo ‘{1..100} sum is :‘ $sum } [[email?protected] Test]# cat invokefunctionfromfile.sh #!/bin/bash path="/root/Test/invokefunction.sh" if [ -f ${path} ] then source $path # 加载函数 Sum # 调用函数 else echo "file not exist or error" fi [[email?protected] Test]# bash invokefunctionfromfile.sh {1..100} sum is : 5050 3、示例3:函数参数传递 [[email?protected] Test]# cat functionwithargs.sh #!/bin/bash function Add () { # 定义函数 ((sum=$1+$2)) echo "$1 + $2 sum is" ${sum} } Add $1 $2 # 调用函数并传递参数 [[email?protected] Test]# bash functionwithargs.sh 100 150 100 + 150 sum is 250 [[email?protected] Test]# bash functionwithargs.sh 509 150 509 + 150 sum is 659 4、示例4:使用return返回函数运行结果 [[email?protected] Test]# cat functionwithreturn.sh #!/bin/bash function TestReturn() { if [ -d $1 ] then return "122" else return "222" fi } TestReturn $1 result=$? # 获取函数返回值 if [ ${result} == "122" ] then echo "$1 exist,return value is:" ${result} else echo "$1 not exist,return value is:" ${result} fi [[email?protected] Test]# bash functionwithreturn.sh /etc/sysconfiggg /etc/sysconfiggg not exist,return value is: 222 [[email?protected] Test]# bash functionwithreturn.sh /etc/sysconfig /etc/sysconfig exist,return value is: 122
5、示例5:使用echo返回函数运行结果 [[email?protected] Test]# cat functionwithecho.sh #!/bin/bash function TestReturn() { if [ -d $1 ] then echo "122" else echo "222" fi } result=$(TestReturn $1) # 获取函数返回值 if [ ${result} == "122" ] then echo "$1 exist,return value is:" ${result} fi [[email?protected] Test]# bash functionwithecho.sh /etc/sysconfig /etc/sysconfig exist,return value is: 122 [[email?protected] Test]# bash functionwithecho.sh /etc/sysconfiggg /etc/sysconfiggg not exist,return value is: 222
[[email?protected] Test]# cat functionwithecho.sh #!/bin/bash function TestReturn() { if [ -d $1 ] then echo "$1 exist" else echo "$1 not exist" fi } result=$(TestReturn $1) # 获取返回值,返回的结果是字符串 if [ "${result}" == "$1 exist" ] then echo "$1 exist,return value is:" ${result} fi [[email?protected] Test]# bash functionwithecho.sh /etc/sysconfiggg /etc/sysconfiggg not exist,return value is: /etc/sysconfiggg not exist [[email?protected] Test]# bash functionwithecho.sh /etc/sysconfig /etc/sysconfig exist,return value is: /etc/sysconfig exist 本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |