Shell脚本函数 实验

news2024/11/25 10:42:28

Shell 函数

命令序列按照格式写在一起,用函数的方式调用并进行重复使用命令序列。这就是它的核心作用
使用函数可以避免代码重复,函数可以将大的工程分割成若干小的功能模块,提高代码的可读性。

函数的基本格式写法有两种,如下:

第一种方式:

第二种写法:

 

区别在于function可以替换为括号()

return

return:表示退出函数并返回一个退出值,用$?可以显示这个值,return一般会写在函数最后一行退出值是有范围的:0—255,超过255会除以256再取余

shell脚本中return的返回值默认就是0,或者非0的返回码,在shell脚本中意义不大,主要是作为判断结果,判断函数的执行情况。 

exit:作用于整个脚本,立即终止,没有返回码,脚本会立刻停止运行

exit 0 :表示程序正常结束             

exit 1 :程序是异常退出的

$?:在shell脚本中就是exit 0

函数传参:在shell中,调用函数可以传递参数,位置变量来传参,我们在函数内部可以定义位置变量。

在函数中,local仅用于函数的内部变量;定义了local变量就代表内部变量,只能用在函数内部;不加就是默认为全局变量。如:

递归函数

函数调用自己本身的函数, 

例:用函数递归的方式,写一个阶乘,要求阶乘数可以自定义

 

以求6的阶乘为例,6被调用到函数的命令序列当中,先判断是否为1,6不为1执行else,6在函数内部执行减1(temp)并且和6再相乘,并且函数重复执行,直到最后值为1

 local  result=$(abc  $temp)     意思为 abc调用  local  temp=$(($1-1))  中得到的数,得到的数进入函数的命令序列      并且每次减一都调用一次循环执行直到最后得到的值为1不再进行判断,最后把累乘的结果打印出来

例:函数调用自己,打印出自定义目录下所有的目录和文件   /opt目录下

实验

1. 判断return值

[root@localhost opt]# vim ggg.sh 
ky30 () {
  read -p"输入一个数字:“ a
  a=$(($a*2))
  return
}
ky30
#如果这个运算结果不正确,
  a=10.88
  result=$?
  echo $?
#这种情况下,return的值,是多少呢?

此时return值为非0

              

2. 使用函数库,创建一个yum源,然后要在脚本中安装一个服务nginx

[root@localhost opt]# vim ck.sh 
ck () {
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
yum clean all && yum makecache
yum -y install epel-release.noarch
}
az () {
yum -y install $1
}
vim dy.sh 
./opt/hanshuku.sh
ck
read -p "输入要安装的软件" a
az $a 

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

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

相关文章

零钱兑换 II(力扣)动态规划 JAVA

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。 示例…

预付费电表收费系统

预付费电表收费系统是一种先进的电表管理系统,它能够帮助电力公司更加高效地管理电表收费,提高用电效率,降低能源浪费。本文将从以下几个方面介绍预付费电表收费系统的特点和优势。 一、预付费电表收费系统的原理 预付费电表收费系统是指用户…

5分钟给你破解这套10万赞的生产教程,访谈乔布斯的AI对话数字人视频是怎么做的

本期是赤辰第16期AI项目拆解栏目; 底部准备了7月粉丝福利,看完可以领取; 上周给粉丝们讲解AI动图说话月涨粉20万的案例并给出保姆式教程,粉丝反馈很热烈,都觉得AI强大,有些学员给自己账号做视频&#xff…

ACME申请SSL证书

1.开放443端口 firewall-cmd --permanent --add-port443/tcp # 开放443端口 firewall-cmd --reload # 重启防火墙(修改配置后要重启防火墙)2.安装ACME # 安装acme curl https://get.acme.sh | sh -s email你的邮箱地址 # 别名 alias acme.sh~/.acme.sh/acme.sh3.使用ACME申请…

rabbitMQ杂记

消息队列应用场景 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 削锋等问题实现高性能,高可用,可伸缩和最终一致性: 解耦: 异步: 削峰: 常…

全面深入理解MySQL自增锁

💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…

Gin+Gorm练手小项目bubble清单企业级结构剖析

概述 本项目来源于Qimi老师的小清单项目——基于gingorm开发的练手小项目,通过该项目可初识go web开发该有的姿势。笔者对代码有些许修改,以下是项目成功运行的截图,主要功能有添加,删除,确认,查看待办事项…

APP测试学习之Android模拟器Genymotion安装配置不上解决方法以及adb基本使用

Android模拟器Genymotion安装配置不上解决方法以及adb基本使用 Genymotion下载安装配置遇见的问题解决方法adb基本使用 Genymotion下载 1.首先进入官网 https://www.genymotion.com/ 2.在官网注册一个账号 https://www-v1.genymotion.com/account/login/ 3.下载 https://www.g…

Linux之设备树解耦架构解读-V1.0

术语和缩略语 本文档使用了以下术语和缩略语 Dts:DTS即Device Tree Source,是一个文本形式的文件,用于描述硬件信息。一般都是固定信息,无法变更,无法overlay。 Dtsi:可以理解为dts的公共部分&#xff0…

【编程技巧--函数指针回调函数】

1.什么是函数指针 在C语言中,一个函数在编译时被分配一个入口地址(第一条指令的地址),我们可以将地址赋给一个指针,这样,指针变量持有函数入口地址,它就指向了该函数,所以称这种指针为指向函数的指针,简称函数指针。 我们在编写代码的时候可以用函数名…

教你快速安装Bootstrap

目录 Bootstrap简介Bootstrap的下载Bootstrap的使用 Bootstrap简介 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作,基于HTML、CSS、JavaScript开发的简洁、直观、强悍的前端开发框架,它会使Web开发更加快捷Bootstrap框架的优点 开发…

【电路原理学习笔记】第4章:能量与功率:4.3 电阻的额定功率

第4章:能量与功率 4.3 电阻的额定功率 额定功率是一个电阻器可以消耗的最大功率,且保证其不会被过多的热量损坏或改变其阻值。额定功率与电阻值无关,主要由电阻的材料成分、物理尺寸和形状决定。在其他条件相同的情况下,电阻的表…

Redis分布式锁的演变历程

什么时候用分布式锁 当并发去读写一个【共享资源】的时候,我们为了保证数据的正确,需要控制同一时刻只有一个线程访问。 分布式锁就是用来控制同一时刻,只有一个 JVM 进程中的一个线程可以访问被保护的资源。 分布式锁入门 分布式锁应该满足…

MySQL数据库之高级SQL语句

目录 一.MySQL语句前言 1.1 按关键字排序 1.2 环境准备 1.3单字段排序 1.3.1升序 1.3.2降序 1.3.3 order by还可以结合where进行条件过滤 ​编辑 1.4多字段排序 1.4.1查询学生信息先按兴趣id升序排列,相同分数的,id按照降序排列 1.4.2查询学生信息先…

Win10环境下Android Studio中运行Flutter HelloWorld项目

一、引言 Android Studio是Android的官方IDE(Integrated Development Environment)。它专为Android而打造,可以加快开发速度,为Android设备构建最高品质的应用。 Flutter是Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开…

Linux--stdin、stdout、stderr的文件描述符fd

stdin的文件描述符是 &#xff1a;0 stdout的文件描述符是 &#xff1a;1 stderr的文件描述符是 &#xff1a;2 证明&#xff1a; #include <stdio.h>int main() {printf("stdin: %d\n",stdin->_fileno);printf("stdout: %d\n",stdout->…

instsrv 注册 windows 系统服务

注册步骤 Win r 打开 cmd 窗口执行 instsrv.exe myserver C:\Windows\System32\srvany.exe 示例&#xff1a; instsrv.exe nginx C:\Windows\System32\srvany.exe win r 运行 regedit 进入注册表&#xff0c;依次找到以下路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\S…

如何应用MySQL高阶语句(子查询)

目录 一、SQL高阶语句 常用查询 关键字排序 升序降序 按区域进行查找 分组统计 limit限制显示结果条目 As别名设置 使用场景 嵌套克隆复制表结构 二、通配符 三、子查询 insert子查询 update子查询 delete子查询 Exists检测 一、SQL高阶语句 常用查询 对于MyS…

非50欧系统阻抗的S参数测试

1. S参数依赖于系统阻抗 S参数的定义需要约定一个系统阻抗。同一个微波电路&#xff0c;在不同系统阻抗下的S参数是不同的。例如&#xff0c;50欧电阻在50欧系统阻抗下的S11为零&#xff0c;是没有反射的匹配状态&#xff1b;但50欧电阻在75欧系统阻抗下的S11不为零&#xff0…

Puppeteer 使用教程-实战篇(爬取图片、视频、音频,页面数据)

目录 前言 一、 获取实体店铺信息 二、 获取全国各省市县地图json数据 三、 cookies 四、 获取网络图片、视频资源 五、 自动化测试 总结 前言 续上篇&#xff0c;我们简单讲述一下puppeteer常见的应用场景&#xff0c;包括静态页面数据获取&#xff0c;网络请求获取截取…