shell函数的定义、传参、变量、递归

一,shell函数定义

将命令序列按格式写在一起,可方便重复使用命令序列

二,格式

1、格式一:

function 函数名 {
命令序列
}

2、格式二:

函数名() {
命令序列
}

三、函数返回值

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

使用原则:
1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余
在这里插入图片描述
在这里插入图片描述
结果正确
在这里插入图片描述

超过256了就回裂开,所以我们改下代码
把脚本中的return换成echo,在改下输出格式
在这里插入图片描述
在这里插入图片描述

四、函数传参

在这里插入图片描述
在这里插入图片描述

五、函数变量的作用范围

函数在Shell脚本中仅在当前Shell环境中有效
Shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、递归

1,阶乘
在这里插入图片描述
2,递归查询目录
在这里插入图片描述
在这里插入图片描述

七、创建函数库

在这里插入图片描述
另写一个脚本,在调用上面脚本的函数

在这里插入图片描述
在这里插入图片描述
我们输入100 5
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值