Day6: Shell函数和参数传递

打印 上一主题 下一主题

主题 978|帖子 978|积分 2934

学习目标学习内容1. 函数的定义和调用2. 参数传递3. 返回值4. 练习任务大树哥个人信息
学习目标


  • 学习Shell中函数的概念和用法。
  • 理解如何在函数中定义和调用命令序列。
  • 掌握如何传递参数给函数并获取返回值。
  • 练习编写脚本,使用函数进行模块化编程。
学习内容

今天我们将学习如何在Shell编程中定义和使用函数,以及如何传递参数给函数。
1. 函数的定义和调用

在Shell中,我们可以使用function关键字或直接使用函数名来定义函数。
  1. 1# 使用`function`关键字定义函数
  2. 2function my_function() {
  3. 3    # 命令序列
  4. 4    command1
  5. 5    command2
  6. 6}
  7. 7
  8. 8# 直接使用函数名定义函数
  9. 9my_function() {
  10. 10    # 命令序列
  11. 11    command1
  12. 12    command2
  13. 13}
复制代码
我们可以通过函数名来调用函数,并执行函数中定义的命令序列。
  1. 1my_function
复制代码
2. 参数传递

我们可以向函数传递参数,并在函数中获取参数的值。在函数中,可以使用$1、$2等变量来引用传递给函数的参数。
  1. 1# 传递参数给函数
  2. 2my_function() {
  3. 3    echo "Hello, $1!"
  4. 4}
  5. 5
  6. 6# 调用函数并传递参数
  7. 7my_function "daShuGe"
复制代码
在上述示例中,我们向函数my_function传递参数daShuGe,并在函数中使用$1来获取参数的值 ,执行结果Hello, “daShuGe”!。
3. 返回值

函数可以使用return语句返回一个值。函数的返回值可以通过$?来获取。
  1. 1# 定义带返回值的函数
  2. 2get_square() {
  3. 3    local num=$1
  4. 4    local square=$((num * num))
  5. 5    return $square
  6. 6}
  7. 7
  8. 8# 调用函数并获取返回值
  9. 9get_square 5
  10. 10result=$?
  11. 11
  12. 12echo "The square is: $result"
复制代码
在上述示例中,函数get_square计算传入参数的平方,并使用return语句返回结果。我们通过$?来获取返回值并将其存储在变量result中,执行结果为“The square is:25”。
4. 练习任务
  1. 1# 定义函数,打印传入的参数
  2. 2print_name() {
  3. 3    echo "Hello, $1!"
  4. 4}
  5. 5
  6. 6# 调用函数并传递参数
  7. 7print_name "Alice"
  8. 8
  9. 9# 定义函数,计算两个数的和并返回结果
  10. 10add_numbers() {
  11. 11    local num1=$1
  12. 12    local num2=$2
  13. 13    local sum=$((num1 + num2))
  14. 14    return $sum
  15. 15}
  16. 16
  17. 17# 调用函数并获取返回值
  18. 18add_numbers 10 20
  19. 19result=$?
  20. 20
  21. 21echo "The sum is: $result"
复制代码
在练习任务中,我们定义了两个函数:print_name用于打印传入的参数,add_numbers用于计算两个数的和并返回结果。我们调用这两个函数,并传递相应的参数。
大树哥个人信息

  
      
  • 网名:大树哥  
  • 8年以上数据库中间件经验,专注于数据库中间件运维,Oracle、MySQL、Weblogic、WebSphere、Tomcat、Nginx等;  
  • Oracle 19c OCP,软考数据系统工程师,系统规划与管理师高级等认证  
  • 微信公众号: AI智能提效开发运维  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表