当前位置: 首页 > news >正文

Shell 脚本编程:函数 - 实践

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.jsqmd.com/news/2295/

相关文章:

  • PR曲线绘制
  • 5台电脑怎么同步文件最安全高效?别再只知道用局域网共享了!
  • 关于CompatibilityHID例程的使用
  • 【CVCVCV】GAN代码解析
  • 实用指南:通过ssh远程linux 盒子
  • SystemVerilog 代码风格指南
  • 赋能智慧化工:无锡哲讯科技SAP解决方案,构筑安全、合规与高效的数字新底座
  • lmhosts和hosts的时效
  • Https模式访问wcf方法配置
  • 芯之所向,智造未来:无锡哲讯科技赋能芯片行业的高效管理与数字革新
  • UART、I2C、SPI:三种常见通信协议的区别
  • Day05---数据类型的转换
  • 效率党的图片处理新选择:滴答修——在线全能工具箱,免费且强大
  • GPU0与GPU1
  • 对接全球股票市场K线数据实战
  • centos安装docker和Jenkins
  • 完整教程:数据分析报告的写作流程
  • 硬件检测神器 HWiNFO:全组件监控 + 多系统兼容,免费无广告,运维 / 评测必备
  • Qt - 音频采集程序
  • 923-
  • 基于 AI 网关提升大模型应用可用性的实践
  • 绝了!TaskMatrix Pro - 谷歌、火狐浏览器任务管理插件,四象限矩阵让拖延症瞬间消失 - 开源免费
  • 洛谷P10288 [GESP样题 八级] 区间
  • AI 时代下,开发流程的重塑:从“代码先行”到“文档驱动”
  • P13617 [ICPC 2025 APC] Bit Counting Sequenc
  • perl -MCPAN -e install GD;
  • Day 02 HTML的基础 - 教程
  • P3959 [NOIP 2017 提高组] 宝藏 题解
  • (二)若依前后端分离版本二次开发 代码生成、目录添加、数据字典维护
  • C#与Access数据库操作简易指南:增删改查及类封装