shell 脚本中的函数

news2024/9/28 23:32:17

目录

  • 一. shell 函数作用:
  • 二. shell 函数的定义格式:
  • 三.函数返回值:
  • 四.函数传参:
    • 扩展:
  • 六. 函数变量的作用范围:
  • 七 . 递归
    • 7.1阶乘
  • 八. 函数库

一. shell 函数作用:

使用函数可以避免代码的重复
使用函数可以将大的工程分割位若干个小的功能模块,代码的可读性更强

二. shell 函数的定义格式:

1】
function 函数名 {
命令序列
}
2】
函数名(){
命令序列
}

三.函数返回值:

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

1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余

示例:获取函数的返回值在这里插入图片描述在这里插入图片描述通过return退出函数并返回一个退出值,脚本中可以用$?变量显示该值,该值的范围为0-255,超过的将会除以256取余

示例二:在函数内用echo输出值,在函数体外可用 变量=S(函数名) 获取函数的返回值
在这里插入图片描述在这里插入图片描述echo 输出的返回值不受限制

四.函数传参:

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

扩展:

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

六. 函数变量的作用范围:

函数在shell脚本中仅在当前shell环境中有效
shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令

示例:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
总结:
函数默认只能脚本内的shell环境有效(使用source执行脚本,也会影响系统的当前shell环境) 脚本中的变量默认全局有效(即函数体内外部有效) 在函数体内执行 local 变量 ,可将变量限制在函数体内部使用

七 . 递归

函数调用自己本身的函数

7.1阶乘

示例一:
在这里插入图片描述
示例二:例如我需要列出/var/log下的所有文件和目录且每一个层级之间有缩进

在这里插入图片描述
示例三:执行命令 mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt,
通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

在这里插入图片描述
示例四:输入一个合法的点分十进制ip地址将他转换成二进制

在这里插入图片描述

八. 函数库

1.创建添加函数库
在这里插入图片描述二.在脚本内执行函数库,直接调用函数
在这里插入图片描述

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

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

相关文章

OJ刷题 第十五篇(递推较多,奥赛篇)

31005 - 昆虫繁殖(难度非常大,信息奥赛题) 时间限制 : 1 秒 内存限制 : 128 MB 科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫…

从零开始 Spring Boot 27:IoC

从零开始 Spring Boot 27:IoC 自从开始学习和从事Spring Boot开发以来,一个一直让我很迷惑的问题是IoC和Bean到底是什么东西。这个问题一直到我翻阅完Spring开发文档Core Technologies (spring.io)后才真正得到解惑。 虽然中文互联网上关于IoC的文章很多…

基于AT89C51单片机的电子琴设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87765092?spm1001.2014.3001.5503 源码获取 运用单片机,将音乐的大部分音符与相应按键相匹配,让音乐爱好者利用单片机也可以进行演奏。 基…

SAP EWM /SCWM/CHM_LOG - 显示及分析检查日志

很多公司上了EWM系统后会在运行一段时间之后出现一些系统数据异常情况,问题大致分为以下一些情况: 序号异常情况1 库存调整过账后可用数量的数据不正确2 错误地传输原产国 (2)3 HU 在可用库存中,即使不允许 HU4 非 AQUA 级别创建仓库任务后可…

TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

前言:建议看着图片,根据文字描述走一遍TCP通讯过程,加深理解。 目录 TCP通信时序: 1)建立连接(三次握手)的过程: 2)数据传输的过程: 3)关闭连…

智能优化算法:斑马优化算法-附代码

智能优化算法:斑马优化算法 文章目录 智能优化算法:斑马优化算法1.斑马优化算法1.1 初始化1.2 阶段一:觅食行为1.3 阶段二:针对捕食者的防御策略 2.实验结果3.参考文献4.Matlab 摘要:斑马优化算法(Zebra Op…

协同设计有什么优势?都有哪些协同设计软件

设计师创作既有视觉吸引力又实用的作品需要很多时间。对于某些项目,第一次可能会顺利验收,但事实上,设计和修改总是伴随着。 如何有效地修改和促进项目的实施?答案很简单:协作设计。本文将带您深入学习协作设计的相关…

Spring01-Spring简介、IOC简介及入门、IOC详解、bean讲解、依赖注入、配置文件模块化、实现CRUD

Spring简介 一、Spring 是什么 Spring 是一个分层的 Java SE/EE full-stack (一站式) 轻量级开源框架 以 IOC (Inverse Of Control:反转控制) 和 AOP (Aspect Oriented Programming:面向切面编程) 为核心。 在 Java三层架构中 分别提供了响应技术 分…

docker php安装redis扩展

有这么一个情况,我在docker中,安装了镜像,也启动了容器,容器有:nginx、mysql、redis、php 是一个基本的开发环境 容器启动成功,我们先连接一下,看看是否正常。 先保证这些都ok,我们…

【Spring框架一】——Spring框架简介

系列文章目录 Spring框架简介 系列文章目录前言一、什么是Spring框架?二、Spring框架的优势1.简化开发流程:Spring提供了许多现成的功能,可以使得开发人员在构建应用程序时减少编写重复代码的工作。2.提高可维护性:Spring框架采用…

chatgpt搜索脚本

安装地址 https://greasyfork.org/zh-CN/scripts/459997 注意事项 !!注意:如果你在360相关浏览器上使用插件。360搜索将不会生效,因为已被浏览器禁用在so.com网址上使用。 !!尽量选择tampermonkey脚本管…

面试华为测试岗,收到offer后我却毫不犹豫拒绝了....

我大学学的是计算机专业,毕业的时候,对于找工作比较迷茫,也不知道当时怎么想的,一头就扎进了一家外包公司,一干就是2年。我想说的是,但凡有点机会,千万别去外包! 在深思熟虑过后&am…

Android性能优化专家需求量大,人才缺口呼之欲出

前言 Android性能优化是Android应用开发中一个非常重要的环节。一款高性能、流畅的应用可以提高用户体验和满意度,提升应用的用户留存率和活跃度。而在今天,移动设备日趋普及,市场竞争日益激烈,优秀的性能已经成为了Android应用不…

Android安卓手机APP应用自有keystore签名证书怎么生成?

Android安卓keystore签名证书怎么生成? 1、安装JRE环境 Oracle官方下载jre安装包:https://www.caochai.com/article-4206.html ,并记住安装的目录; 2、打开电脑上的cmd命令提示符工具,先进入jre安装目录&#xff1b…

宿主机(Windos)上文件上传至Ubuntu (linux)

因为我想在ubuntu20.04 上安装Sublime Text ,然而我不想在ubuntu 上下载安装因为太简单了。 我想在windos 上下载好linux 版本,然后发送到ubuntu上(和ubuntu上下载安装多了一个上传的过程),我决定挑战一下 第一步进入VM 后打开你…

【Linux学习】多线程——互斥 | 线程安全

🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言:你只管努力,剩下的交给时间! 互斥 | 线程安全 🥩线程不安全🍚线程不安全的原因 🥩线程互斥…

网络编程五--自定义应用层协议

写在前面 前面回声服务器/客户端介绍了如何通过对收发IO的控制实现回声服务器/客户端。 在服务器端应用层的处理(协议)可以看作是“回声操作”,即回发客户端发来的消息。而在客户端应用层的处理(协议)则只是简单显示…

Mysql获取指定时间范围数据

MySQL获取某个时间范围内的数据 TO_DAYS(date)函数。 to_days():返回从0000年至当前日期的总天数。 目录 1、今天(TO_DAYS()) 2、今天昨天(TO_DAYS()) 3.近7天(DATE_SUB()) 5.本月(DATE_FORMAT()) 6.上一月(PERIOD_DIFF()) 7.本季度 8.上季度 9.本年 ​1…

MyBatis介绍、创建与使用

文章目录 一、MyBatis是什么二、学习 MyBatis 的意义三、配置 MyBatis 开发环境(一)配置 MyBatis 的相关依赖(二)配置数据库连接字符串和 MyBatis(保存的 XML 目录)1. 创建并编辑配置文件2. 配置 MyBatis 的…

[GFCTF 2021]ez_calc day3

目录 此时我脑袋产生了几个问题&#xff1a; 但是尝试了几个弱密码发现不对&#xff0c;找一下有没有代码泄露的点。 咦发现ctrlu查看的源码和f12显示的竟然不一样我丢&#xff0c;涨知识了。 js大小写有漏洞之前遇见过 <!--if(req.body.username.toLowerCase() ! admin…