Shell 脚本编程:函数 - 实践

news/2025/9/23 16:15:42/文章来源:https://www.cnblogs.com/yxysuanfa/p/19107421

Shell 脚本编程:函数

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

一、函数定义格式

格式一:
function 函数名 {
命令序列
}
格式二:
函数名() {
命令序列
}

二、函数返回值

  • 使用 return 返回值(0-255),可通过 $? 获取

  • 0-255,超出时 除以256取余

示例:
#!/bin/bash
function cy {
read -p "请输入一个整数: " n
return $[n*2]
}
cy
echo "返回值: $?"

在这里插入图片描述

3. 函数传参与变量作用域

函数变量的作用范围(局部变量以及全局变量)
函数在shell脚本中仅在当前shell环境中有效
shell脚本中变量默认全局有效
将变量限定一个函数的内部local,即局部变量

示例:传参计算两数之和
#!/bin/bash
sum() {
sum=$[ $1 + $2 ]
echo $sum
}
sum $1 $2

在这里插入图片描述

示例:局部变量与全局变量

将变量限定在函数内部使用local命令
即这个local的变量仅仅在当前的函数内有效,在别的函数中无效

#!/bin/bash
abc() {
echo "函数内未定义local的i: $i"
let i++
local i
i=6
echo "函数内local的i: $i"
}
i=9
abc
echo "函数外的i: $i"

在这里插入图片描述

四、递归函数

示例:计算阶乘
#!/bin/bash
function yy() {
if [ $1 -eq 1 ];
then
echo 1
else
local temp=$[$1 - 1]
local result=$(yy $temp)
echo $[result * $1]
fi
}
read -p "输入一个值: " value
result=$(yy $value)
echo "阶乘值为: $result"

在这里插入图片描述

五、函数库

将常用函数集中在一个脚本中,方便其他脚本调用

示例

编辑函数库脚本

#!/bin/bash
jia() {
result=$[$1 + $2]
echo "$result"
}
jian() {
result=$[$1 - $2]
echo "$result"
}
cheng() {
result=$[$1 * $2]
echo "$result"
}
chu() {
if [ $2 -ne 0 ];
then
result=$[$1 / $2]
echo "$result"
else
echo "除法中分母不能为0"
fi
}

编辑调用函数库脚本

#!/bin/bash
. /root/test5.sh
read -p "请输入第一个数字: " n
read -p "请输入第二个数字: " m
result1=$(jia $n $m)
result2=$(jian $n $m)
result3=$(cheng $n $m)
result4=$(chu $n $m)
echo "两数之和为: $result1"
echo "两数之差为: $result2"
echo "两数之积为: $result3"
echo "两数之商为: $result4"

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PR曲线绘制

PR曲线绘制 https://blog.csdn.net/xiang_gina/article/details/149962713作者:太一吾鱼水 宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 声明:博客写的比较乱,主要是自己看的。…

5台电脑怎么同步文件最安全高效?别再只知道用局域网共享了!

还在为多台电脑文件同步烦恼,手动传输效率低?本文提供最佳解决方案,教你告别U盘。详解如何使用坚果云实现文件无感、实时同步,并借助其历史版本与云桥模式功能,安全且节省空间地管理多设备文件,是高效办公的必备…

建设信用网站的目的门户网站建设总结

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说。主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所…

wordpress付费插件网站网络优化工程师证

2008/02/28 17:32i当ListView绑定数据源后,这个效果让我无从下手, 这个问题一直困扰着我,后来我在CSDN上发贴求助,问题终于得以解决,这是一位大大给的回复: 以下各节提供了三种方法,用于创建各行的 Background 颜色具有交替效果的 ListView。该示例还论述用于在添加…

自己建网站做那个模块好建设网站的费用如何账务处理

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 unet医学细胞分割实战1 unet医学细胞分割实战2 unet医学细胞分割实战3 unet医学细胞分割实战4 unet…

专业开发网站多少钱做游戏类型的网站的好处

在我之前的文章 “Elasticsearch:使用 ELSER 进行语义搜索”,我们展示了如何使用 ELESR v1 来进行语义搜索。在使用 ELSER 之前,我们必须注意的是: 重要:虽然 ELSER V2 已正式发布,但 ELSER V1 仍处于 [预览…

什么是html5网站佛山新网站建设服务

【题目描述】 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1&am…

建站公司转型做什么业务wordpress吧

flashplayer的cpu渲染 bitmapData占用的内存分两块,一块是原始数据区,另一块是解压后的内存区10秒内如果没有使用这个bitmapdata,解压后的内存区会被释放,当10秒后重新使用,这个bitmapdata会再次解压,所以就…

有什么做礼品的卖家网站网站当地备案

概念:分包就是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。 分包的优点:可以优化小程序首次启动的下载时间,在多团队共同开发时可以更好的解耦…

汕头网站建设只需要800网上申请注册公司网址

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值&a…

呼伦贝尔网站建设厦门网站建设报价

动态内存管理 1. 为什么存在动态内存管理2. 动态内存函数的介绍2.1 malloc函数和free函数2.2 calloc函数2.3 realloc函数 3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free函数3.4 使用free释放动态开辟内存的一部分…

关于CompatibilityHID例程的使用

CompatibilityHID例程主要演示HID和串口之间的数据传输 1、首先注意工程要根据MCU不同型号进行相应的配置,具体可参考下链接: EVT-CH32x系列芯片EVT工程使用注意说明2、例程演示需要用到相应的工具,下载链接如下:H…

【CVCVCV】GAN代码解析

【CVCVCV】GAN代码解析Posted on 2025-09-23 16:06 SaTsuki26681534 阅读(0) 评论(0) 收藏 举报0 通过读GAN的代码了解一下常规深度学习模型的整体工程结构 1

实用指南:通过ssh远程linux 盒子

实用指南:通过ssh远程linux 盒子2025-09-23 16:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…

海外推广是什么工作seo网站代码

main.m // 点语法-编译器特性,编译器遇到点语法会自动展开成相应的 //语法 //为了让其他语言的程序员能快速入手OC加入了点语法 //点语法的本质还是方法调用,不是访问成员变量 //(区别java,java的点语法是访问成员变量 //OC里面就…

SystemVerilog 代码风格指南

代码被阅读的频率远远超过编写的频率。在团队中保持一致的编码风格能够显著提升代码的可读性,这是节省工程时间最有效(也是最简单)的方法之一。在众多编程语言中,Python 可以说是最优雅的。阅读他人编写的 Python …

赋能智慧化工:无锡哲讯科技SAP解决方案,构筑安全、合规与高效的数字新底座

赋能智慧化工:无锡哲讯科技SAP解决方案,构筑安全、合规与高效的数字新底座在波澜壮阔的化工产业图景中,效率、安全与合规是永恒的生命线。随着全球市场竞争加剧、环保法规日趋严格以及供应链不确定性增加,数字化转…

seo的网站网站建立计划书

JDK和JRE的区别 定义:JDK(Java Development Kit)是Java开发工具包的缩写,它是Java开发人员必备的工具。JDK包含了编译器(javac)、Java虚拟机(JVM)和Java类库等开发工具和资源。它提供了开发、编译、调试和运行Java程序所需的一切…

拼多多网站建设框架图英文seo

在ThinkPHP 5中实现带有搜索条件、名称、时间和手机号的3个联表查询(UNION ALL),您可以按照以下步骤进行操作: 确保已经配置好数据库连接信息和相关的模型。 使用union()方法来构建3个联表查询,同时在每个查询中添加所…

wordpress建一个网站用react做的网站

本文通过原理和示例对相机设置参数“黑电平”进行讲解,以帮助大家理解和使用。 原理 相机中黑电平原理是将电平增大,可以显示更多暗区细节,可能会损失一些亮区,但图像更多的关注暗区,获取完图像信息再减掉。只是为了…