Shell学习笔记(6)Shell编程之⾃定义函数

文章介绍了Shell编程中自定义函数的基本语法和用法,包括如何定义和调用函数,以及如何传递和接收参数。通过示例展示了如何创建计算两个数和与乘积的函数,并在用户交互中使用这些函数。最后,文章强调了自定义函数在提高代码可读性和维护性方面的重要性。
摘要由CSDN通过智能技术生成

前言:
Shell编程是一种强大的脚本编程语言,它为我们提供了丰富的工具和功能,可以帮助我们自动化各种任务和处理各种数据。在Shell编程中,我们可以定义自己的函数,以便在脚本中多次使用相同的代码逻辑。自定义函数使得我们的代码更加模块化、可读性更高,并且提高了代码的复用性和可维护性。本文将介绍Shell编程中自定义函数的基本概念、语法和用法,帮助读者更好地理解和运用Shell编程中的函数。

基本语法

function_name(){
#函数体
[return int;]
}

调⽤直接写函数名:function_name [值]

  • 案例⼀:定义⼀个函数:getSum,计算输⼊两个参数的和。
    具体步骤:
    1.执⾏touch funtest.sh;2.执⾏vim funtest.sh,编辑内容如下
#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo "$1 plus $2 equal to $SUM"
}

需要注意的是:
上述代码中的$1和$2指的是调⽤getSum函数时传⼊的参数,⽽不是从命令⾏传⼊的参数。

3.可以通过下⾯的代码调⽤⾃定义函数:

#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo "$1 plus $2 equal to $SUM"
}
getSum 1 2
  • 如何给getSum函数传⼊动态的参数呢?
    可以对代码做如下改动:
#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo "$1 plus $2 equal to $SUM"
}
read -p "please enter a num n1: " n1
read -p "please enter a num n2: " n2
getSum $n1 $n2
  • 如何接收getSum函数的返回值呢?
    可以对代码做如下改动:
#!/bin/bash
 
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo "$1 plus $2 equal to $SUM"
}
read -p "please enter a num n1: " n1
read -p "please enter a num n2: " n2
#把getSum函数的返回值赋值给result
result=`getSum $n1 $n2`

执⾏结果如下:
在这里插入图片描述
执⾏上述代码后,会发现并没有输出结果。这是因为,我们还未将result的值进⾏输出。再次修改代
码:

#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo "$1 plus $2 equal to $SUM"
}
read -p "please enter a num n1: " n1
read -p "please enter a num n2: " n2
result=`getSum $n1 $n2`
echo "result value is: $result"

执⾏结果如下:
在这里插入图片描述

案例⼆:

具体要求如下:
1.定义⼀个函数getSum,计算输⼊两个参数的和;
2.定义⼀个函数getMultiply,计算输⼊两个参数的乘积;
3.在while循环中,接收⽤户输⼊的值:
(1).如果⽤户输⼊的值为:sum,则调⽤getSum。并输出getSum返回的值;
(2).如果⽤户输⼊的值为:mul,则调⽤getMultiply。并输出getMultiply返回的值;
(3).如果⽤户输⼊的值不是sum或者mul,则退出程序。

  • 第⼀步,⾃定义getSum函数,计算输⼊两个参数的和。
    代码如下:
#!/bin/bash
 
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo $SUM
}

第二步,⾃定义getMultiply函数,计算输⼊两个参数的乘积。
代码如下

#!/bin/bash
 
getMultiply(){
 MUL=$[$1*$2]
 echo $MUL
}

第三步,在while循环中,接收⽤户输⼊的值,并调⽤getSum函数。
代码如下:

#!/bin/bash
getSum(){
 # $1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo $SUM
}
getMultiply(){
 MUL=$[$1*$2]
 echo $MUL
}
while true
do
read -p "please enter your selection: " sel
if [ $sel == "sum" ];then
read -p "please enter a num n1: " n1
read -p "please enter a num n2: " n2
result=`getSum $n1 $n2`
echo result=$result
fi
done

执⾏结果如下:
在这里插入图片描述
第四步,在while循环中,接收⽤户输⼊的值,并调⽤getSum函数。
代码如下:

#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo $SUM
}
getMultiply(){
 MUL=$[$1*$2]
 echo $MUL
}
while true
do
read -p "please enter your selection: " sel
if [ $sel == "sum" ];then
read -p "please enter a num n1: " n1
read -p "please enter a num n2: " n2
result=`getSum $n1 $n2`
echo result=$result
elif [ $sel == "mul" ];then
read -p "please enter a num n1: " n1
 read -p "please enter a num n2: " n2
result=`getMultiply $n1 $n2`
echo result=$result
fi

在这里插入图片描述

第五步,在while循环中,接收⽤户输⼊的值,如果⽤户输⼊值不是sum或者mul,则退出程序。
代码如下:

#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo $SUM
}
getMultiply(){
 MUL=$[$1*$2]
 echo $MUL
}
while true
do
read -p "please enter your selection: " sel
if [ $sel == "sum" ];then
read -p "please enter a num n1: " n1
read -p "please enter a num n2: " n2
result=`getSum $n1 $n2`
echo result=$result
elif [ $sel == "mul" ];then
read -p "please enter a num n1: " n1
 read -p "please enter a num n2: " n2
result=`getMultiply $n1 $n2`
echo result=$result
else
echo "byebye"
exit
fi
done

在这里插入图片描述
优化代码

#!/bin/bash
getSum(){
 #$1和$2代表传⼊的参数
 SUM=$[$1+$2]
 echo $SUM
}
getMultiply(){
 MUL=$[$1*$2]
 echo $MUL
}
#将调⽤getSum和getMultiply封装到⼀个函数中
getResult(){
read -p "please enter a num n1: " n1
 read -p "please enter a num n2: " n2
if [ $1 == "sum" ];then
result=`getSum $n1 $n2`
echo $result
else
result=`getMultiply $n1 $n2`
echo $result
fi
}
while true
do
read -p "please enter your selection: " sel
if [[ $sel == "sum" || $sel == "mul" ]];then
result=`getResult $sel`
echo result=$result
else
echo "byebye"
exit
fi
done

结尾:
通过本文的介绍,我们了解了Shell编程中自定义函数的重要性和使用方法。自定义函数使得我们能够将代码逻辑封装成可重用的模块,提高了代码的可读性和可维护性。在实际的Shell脚本开发中,合理地运用自定义函数可以大大提高我们的开发效率,并且让我们的代码更加健壮和可扩展。希望本文对读者在Shell编程中使用自定义函数方面提供了一些帮助和指导,能够让你的Shell脚本更加优雅和高效。如果你对Shell编程感兴趣,不妨多加实践和探索,相信你会在Shell编程的世界中收获更多的技能和乐趣。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值