shell函数的定义
shell函数的定义
定义:将命令序列按照格式写在一起.格式指的是函数的固定格式
作用:方便重复使用,还可以做成函数库,集中在一起,随时可以传参调用,大的工程分割成小的模块,提高代码的可读性.
函数的格式
vim hanshu1.shfunction shopping {命令序列}shopping () {命令序列}
示例
function abc {read -p "输入一个数" numa=$(($num*2))echo $a
}
abc:wq
函数返回值
return的作用
只能写在函数的内部,目的是从函数的内部获取一个返回值,用来判断是否继续执行下一个脚本.
在使用return $?传返回码的时候,默认0是成功,非0都是失败,返回码可以自定义,范围是0-255之间,超过了就会大数字/255,取余
function abc {read -p "输入一个数" numa=$(($num*2))return $a #return改变了$?的状态码性质,不再代表成功或失败,只代表返回的数字
}
abc
echo $?
:wq
函数的传参方式以及函数变量的作用范围
脚本内部传参
sum () {num=$(($1+$2))echo $num
}
read -p "第一个数字" num1
read -p "第一个数字" num2
sum $num1 $num2
脚本外部
vim chuancan.sh
sum () {num=$(($1+$2))echo $num
}
sum $1 $2
:wqbash chuancan.sh 1 2
abc (){a=5b=6
}
a=8
b=9
abc
echo $a
echo $b
在函数内部定义了全局变量,外部的赋值是不能改变内部函数的全局变量的[[ $num =~ ^-?[0-9]+$ ]]abc (){local a=5local b=6c=10
}
a=8
b=9
abc
echo $a
echo $b
echo $c
在加了local之后,就是函数内部的变来那个,而不再是全局变来那个,外部的赋值会替换内部的变量
abc (){echo "inside1 $a " let a++local aecho "inside3 $a"a=8echo "inside2 $a"
}
a=9
abc
echo "outside $a"
函数递归
函数调用自己本身的函数
阶乘举例
4的阶乘 4*3*2*1=24
vim jc.shjiecheng (){if [[ $1 -eq 1 ]]thenecho 1elselocal temp=$(($1-1))local result=$(jiecheng $temp)echo "$(($1*$result))"fi}read -p "输入一个数字" numresult1=`jiecheng $num`echo $result1
函数库
函数库中,只包含定义的函数,由另外一个脚本传入参数来调用我们定义的函数
vim jisuanhanshuku.sh
jiafa() {result=$( echo " $1+$2 " | bc )echo $result
}jianfa() {result=$( echo " $1-$2 " | bc )echo $result
}chengfa() {result=$( echo " $1*$2 " | bc)echo $result
}
练习1
递归目录.把/etc/目录下,所有文件递归出来
如果只是目录,且该目录下没有文件,就打印目录,否则继续打印,直到目录里面没有文件为止
mulu () {for file in `ls $1`doif [[ -d "$1/$file" ]]thenecho $filemulu "$1/$file"elseecho "这是个文件,直接打印"echo "$file"fi
done
}
mulu $1
练习2
把后缀名是.txt的文件复制到/opt/dec当中
mulu () {for file in `ls $1`doif [[ -d "$1/$file" ]]thenecho $filemulu "$1/$file"elseecho "这是个文件,直接打印" "$file"if [[ "$file" == *.txt ]]thencp $file /opt/dec/fifi
done
}
mulu $1
练习3
函数库加减乘除,要求小数和整数都可以运算,小数点后两位
vim jisuanhanshuku.sh
jiafa() {result=$( echo " scale=2; $1+$2 " | bc )echo $result
}jianfa() {result=$( echo " scale=2; $1-$2 " | bc )echo $result
}chengfa() {result=$( echo " scale=2; $1*$2 " | bc)echo $result
}
chufa(){result=$( echo " scale=2; $1/$2 " | bc)echo $result
}vim jisuan.sh
. /root/jisuanhanshuku.sh
read -p "请输入第一个数" num1
read -p "请输入第二个数" num2
sum=`jiafa $num1 $num2`
sub=`jianfa $num1 $num2`
mult=`chengfa $num1 $num2`echo $sum
echo $sub
echo $mult
相关文章:
shell函数的定义
shell函数的定义 定义:将命令序列按照格式写在一起.格式指的是函数的固定格式 作用:方便重复使用,还可以做成函数库,集中在一起,随时可以传参调用,大的工程分割成小的模块,提高代码的可读性. 函数的格式 vim hanshu1.shfunction shopping {命令序列}shopping () {命令…...
vue部署宝塔nginx配置(获取用户ip地址、反代理访问api接口、websocket转发)
以下配置为我自己的需求,因人而异,如果只是单纯的前端非交互页面,可以不用修改配置。 代码及注释,如下: #解决vue-router设置mode为history,去掉路由地址上的/#/后nginx显示404的问题location / {proxy_htt…...
Jenkins教程-3-github自动化测试任务构建
上一小节我们学习了Jenkins在windows和mac系统上安装搭建环境的方法,本小节我们讲解一下Jenkins构建github自动化测试任务的方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和github插件 点击进入Jenkins插件…...
0元体验苹果macOS系统,最简单的虚拟机部署macOS教程
前言 最近发现小伙伴热衷于在VMware上安装体验macOS系统,所以就有了今天的帖子。 正文开始 首先,鉴于小伙伴们热衷macOS,所以小白搜罗了一圈macOS系统,并开启了分享通道。 本次更新的系统版本是: macOS 10.13.6 ma…...
Codeforces Round 946 (Div. 3) E. Money Buys Happiness
m m m个月,每个月月底发 x x x的薪水,也就是第 i i i个月只能用前 i − 1 i-1 i−1个月挣的钱,而不能用这个月挣的钱。第 i i i个月花费 c [ i ] c[i] c[i]的薪水能获得 h [ i ] h[i] h[i]的快乐度,问最多能获取的快乐度是多少。 …...
Git记录 上传至Gitee
1.GitHub拉去的代码需要上传至自己的Gitee需要清除原有remote服务器信息 查看原始远程服务器信息,后删除远程服务器信息 git remote -v git remote rm origin 2.Gitee新建软件仓库 法1)不用初始化仓库,初始化会自动生成.git。如果本地.git…...
笔记-前端
URL 输入到渲染的过程 域名解析,找到服务地址 构建 TCP 连接,若有 https,则多一层 TLS 握手, 特殊响应码处理 301 302 解析文档 构建 dom 树和 csscom 生成渲染树:从DOM树的根节点开始遍历每个可见节点,对于…...
事务AOP
事物管理 事务管理是指对一系列数据库操作进行管理,确保这些操作要么全部成功执行,要么在遇到错误时全部回滚,以维护数据的一致性和完整性。在多用户并发操作和大数据处理的现代软件开发领域中,事务管理已成为确保数据一致性和完…...
RAM和ROM
1,RAM和ROM区别 RAM和ROM都是由来存储的,比如CPU缓存,电脑和手机内存等属于RAM,而固态硬盘,U盘,手机的128G,256G存储空间等都属于ROM。他们的最主要区别是RAM在断电后存储数据就没有了,而ROM在断电后存储数…...
聊聊系统架构之负载均衡优化实践
一、写在前面 最近在进行线上监控检查时,我遇到了两个超出预期的案例。首先,网关层的监控数据与应用实际监控数据存在不一致性,尤其是max有较大的差异,详见如下图。其次在某个应用中,通过httpclient请求某域名时发现只…...
代码规范性思考
表命名和设计 业务模块前缀;下划线分隔,体现业务含义;数据库字符集、字段名、类型、长度、默认值;一对一、一对多、多对多建表;注释清晰;良好的索引; 接口文档 swagger增强工具swagger-boots…...
TestProject Python SDK入门
2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客跳槽涨薪的朋友们有福了,今天给大家推荐一个软件测试面试的刷题小程序。编辑https://…...
服务器数据恢复—EMC Isilon存储中被误删的虚拟机数据恢复案例
服务器存储数据恢复环境: EMC Isilon S200集群存储,共三个节点,每节点配置12块SATA硬盘。 服务器存储故障: 工作人员误操作删除虚拟机,虚拟机中数据包括数据库、MP4、AS、TS类型的视频文件等。需要恢复数据的虚拟机通…...
华为安全Security认证,你了解多少?
华为安全Security 认证包含HCIA-Security, HCIP-Security,HCIE-Security。HCIA-Security 掌握中小型网络信息安全基础知识与相关技术(华为防火墙技术、加解密技术、PKI 证书体系等),具备搭建小型企业信息安全网络的能力,实现中小企…...
自动驾驶规划-RTT* 算法 【免费获取Matlab代码】
目录 1.算法原理3.结果展示4.参考文献5.代码获取 1.算法原理 RRT(Rapidly-Exploring Random Trees) 快速随机扩展树,是一种单一查询路径规划算法。RRT 将根节点作为搜索的起点,然后通过随机撒点采样增加叶子节点的方式,生成一个随机扩展树&a…...
shell编程中的运算符的讲解
在Linux操作系统中也可以使用expr来进行一些数值的运算,expr接受表达式作为参数,并打印计算结果。 对于某些复杂的表达式或早期不支持内嵌算术表达式的Shell环境,expr 仍然是一个可行的选择。 如上图所示,是使用变量sum来承接加和…...
yudao-ui-admin-vue3 nginx配置
本文记录一个yudao-ui-admin-vue3 nginx配置信息 一、安装依赖 npm install 二、编译打包 npm run build:prod三、修改.env.prod文件 # 请求路径 VITE_BASE_URL=http://IP地址/admin-api四、 nginx配置 server {listen 80;server_name localhost...
vue3第四十节(pinia的用法注意事项解构store)
pinia 主要包括以下五部分,经常用到的是 store、state、getters、actions 以下使用说明,注意事项,仅限于 vue3 setup 语法糖中使用,若使用选项式 API 请直接查看官方文档: 一、前言: pinia 是为了探索 vu…...
PostgreSQL源码分析——索引扫描
这里,我们分析一下索引扫描的过程,以最简单的select * from t1 where a 100;语句为例,分析一下查询的过程。 postgrespostgres# \d t1;Table "public.t1"Column | Type | Collation | Nullable | Default ------------------…...
零基础入门学用Arduino 第四部分(一)
重要的内容写在前面: 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后,整体感觉是很好的,如果有条件的可以先学习一些相关课程,学起来会更加轻松,相关课程有数字电路…...
微软MOS认证-Word专家级|超全报考指南
不管是大学生还是职场人,Word 都是绕不开的工具。但多数人只会基础打字排版,面对长文档、规范报告时常常手忙脚乱。MOSWord 专家级认证,正是帮你把 “普通 Word” 变成 “高-效办公武器” 的实用路径。#微软mos认证 #大学生考证 #mos认证考试…...
基于Adafruit NeoTrellis M4打造自定义物理宏键盘:HID协议与CircuitPython实战
1. 项目概述:从通用键盘到专属启动台 如果你和我一样,每天要在电脑前处理大量任务,频繁地在不同应用间切换,或者需要执行一系列固定的快捷键操作,那么你肯定对“效率工具”有着执着的追求。我们习惯了通用键盘的“Ctrl…...
模型哈密顿量构建:从第一性原理到可计算有效模型的实践指南
1. 项目概述:从“黑箱”到“白箱”的化学计算桥梁 在计算化学和材料科学领域,我们常常面临一个核心矛盾:一方面,我们希望模型足够精确,能够捕捉到电子结构最细微的相互作用,比如使用密度泛函理论࿰…...
MonitorControl:终极解决方案!让你的Mac外接显示器亮度调节变得如此简单
MonitorControl:终极解决方案!让你的Mac外接显示器亮度调节变得如此简单 【免费下载链接】MonitorControl 🖥 Control your displays brightness & volume on your Mac as if it was a native Apple Display. Use Apple Keyboard keys or…...
Claude与Codex双引擎协作:AI代码生成的新范式与实践
1. 项目概述:当Claude遇上Codex,双引擎驱动的代码生成新范式最近在GitHub上看到一个挺有意思的项目,叫claude-codex-duo。光看名字,你大概就能猜到它的核心玩法——把Anthropic的Claude和OpenAI的Codex这两个顶级的AI模型给“撮合…...
小盲区、大智慧:大禹电子双探头传感器助力垃圾精细化管理
在智慧城市建设的浪潮下,环卫作业的数字化与精细化已成为提升城市管理效率的关键一环。针对客户提出的垃圾桶顶部安装、测量桶内垃圾高度的需求,特别是面对桶内积水、沙尘等复杂工况,以及对小盲区、高精度的严苛要求,大禹电子凭借…...
程序员,真要失业了:Claude Code新增/goal指令,一个命令,AI替你干完整个项目
最近,GitHub上发生了一件小事。 一个全美排名Top 5的软件工程师,发了一条帖子,只有三句话: “我用/goal重构了一个3万行的遗留项目,花了4小时。” “没有人盯着我,没有PR被拒,没有半夜爬起来看…...
从数据同步工具往后看,NineData 社区版 V5.0.0 这次补齐了什么
从数据同步工具和 ChatDBA 这类能力往后看,V5.0.0 更像一次连续补强,而不是单点加功能。再结合异构数据库迁移工具这类需求,链路扩展、迁移评估和智能诊断一起往前推,社区版的可用边界也随之往前走了一步。落地之前先看这套能力框…...
Python应用性能监控实战:New Relic APM代理原理与部署指南
1. 项目概述:一个现代应用性能的“听诊器”如果你正在用Python构建Web服务、后台任务或者任何需要7x24小时稳定运行的应用,那么“性能”和“可观测性”这两个词,一定是你日常工作中绕不开的焦点。当线上服务突然变慢,用户投诉接踵…...
ncmdump终极指南:3步快速解锁网易云音乐NCM加密文件的完整免费解决方案
ncmdump终极指南:3步快速解锁网易云音乐NCM加密文件的完整免费解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲只能在特定客户端播放而烦恼吗?ncmdump这款强大的NCM解密工…...
