shell函数的定义和递归创建库

目录

一、函数的定义

1:函数的作用

2:定义函数的方法

3:函数返回值return

1:定义:

2:使用原则:

3:示例

 4:第二种方法echo命令

 4:函数传参

 5:函数变量的作用范围

 6:函数的递归

6.1:定义

6.2:使用递归计算阶乘

 7:函数库

8:总结 


一、函数的定义

1:函数的作用

1:使用函数可以避免代码重复

2:使用函数可以将一个大的工程分割为若干小的功能模块,代码的可读性更强

2:定义函数的方法

1:格式一:

function 函数名 {

  命令序列

}

2:格式二:

函数名(){

   命令序列

}

##### main #####

#可以在主代码区域直接使用函数名调用函数

函数名

3:函数返回值return

1:定义:

return表示退出函数并返回一个退出值,脚本中可以$?变量显示该值

2:使用原则:

1:函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码

2:退出状态码必须是0~255,超出时值将为除以256取余

3:示例

 

 4:第二种方法echo命令

 

 4:函数传参

 

 5:函数变量的作用范围

1:函数在shell脚本中仅在当前shell环境有效

2:shell脚本中变量默认全局有效

3:将变量限定在函数内部使用local命令

示例

 

 示例2:

 6:函数的递归

6.1:定义

递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。所以递归要有两个基本要素,结束条件与递推关系

6.2:使用递归计算阶乘

示例:

 

5的阶乘为例:

 #fact 5  $1=5     temp=4     result=$(fact 4)    echo  5 * $(fact 4)  

​  #fact 4  $1=4     temp=3     result=$(fact 3)    echo 5 * 4*$(fact 3)  ​  

#fact 3  $1=3     temp=2     result=$(fact 2)    echo 5 * 4 * 3*$(fact 2)  ​

 #fact 2  $1=2     temp=1      result=$(fact 1)   echo 5 * 4 * 3 * 2*$(fact 1)  ​  

#fact 1              $1=1                                    echo 5 * 4 * 3 * 2 * 1  

示例2:递归查找目录下的子目录和文件

 7:函数库

创建一个函数库文件

 在其他shell脚本中引用函数库

 运行脚本

8:总结 

定义函数的俩种方法

函数返回值俩种方法 return和echo

函数传参

函数的作用范围

阶乘 递归子目录

函数库

注意 全局变量 和局部变量 local

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shell脚本中,可以使用两种方法来定义函数。第一种方法是使用关键字function,格式为:function 函数名 { 命令序列 }。第二种方法是直接使用函数名和括号,格式为:函数名() { 命令序列 }。 函数shell脚本中可以有返回值,可以使用return语句来指定返回值。例如,可以使用乘法运算来定义一个计算结果的函数,返回结果为参数乘以2的值: ``` double() { local result=$(( $1 * 2 )) return $result } ``` 函数可以接受参数,可以在括号中指定参数的名称。例如,可以定义一个加法函数,接受两个参数,并返回它们的和: ``` add() { local sum=$(( $1 + $2 )) echo "The sum is $sum" } ``` 在函数内可以使用local命令将变量的作用范围限定在函数内部,这样函数内部定义的变量不会影响到外部的同名变量。 递归函数是指在函数内部调用自身的函数。例如,可以使用递归来实现阶乘函数: ``` factorial() { if (( $1 <= 1 )); then echo 1 else local subresult=$(factorial $(( $1 - 1 ))) echo $(( $1 * $subresult )) fi } ``` 此外,还可以将一些常用的函数放在一个函数中,供其他脚本调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [shell函数(用法及定义)](https://blog.csdn.net/Gloomyumenge/article/details/111550262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值