linux系统函数的运用

news2024/11/23 21:21:43

函数

  • 函数详解
    • 函数的作用
    • 函数的定义
    • 函数的返回值
    • 函数的作用范围
    • 函数传参
    • 函数递归
    • 函数库

函数详解

函数的作用

  • 在编写shell脚本的时候,经常会发现在多个地方使用了同一段代码,如果只是一小段代码,一般也无关紧要,但是要在脚本中多次重写大块代码的话就太累了,shell中的函数就可以解决这个问题,可以将代码放进函数体封装起来,在需要的地方直接调用它就可以了,它可以提高脚本的可读性和重用性。

函数的定义

1、function 函数名{

命令序列

}

2、函数名(){

命令序列

}
3、注意:函数名不要和系统命令名称冲突
在这里插入图片描述
在这里插入图片描述

函数的返回值

默认情况下,函数的退出状态码是函数中最后一条命令返回的退出状态码,在函数执行结束后,可以用标准变量 $?来确定函数的退出状态码

return 执行到此命令时会结束本次执行的函数,后面跟的数字可以自定义返回值,$?可以查看这个返回值。
在这里插入图片描述
在这里插入图片描述
当执行到函数中的== return 命令时会退出本次函数的执行==,可以继续执行脚本的其它命令。 return 后面跟的值可以通过 echo $? 打印出来。

函数的退出状态码(返回值)必须是 0 - 255 超出时值为除以256取余。

函数的作用范围

  • 在 Shell 脚本中函数的执行并不会开启一个新的子Shell,而是仅在当前定义的Shell 环境中有效。
  • 如果Shell脚本中的变量没有经过特殊设定,默认在整个脚本中都是有效的。
  • 在编写脚本时,有时需要将变量的值限定在函数内部,可以通过内置命令local来实现。
  • 函数内部变量的使用,可以避免函数内外同时出现同名变量对脚本结果的影响。
  • shell脚本中变量默认全局有效
  • local命令:将变量限定在函数内部使用

在这里插入图片描述

最后输出的结果是函数中aa的变量值
在这里插入图片描述
在这里插入图片描述

函数传参

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

脚本的第二位置变量,传给了函数的第一位置变量。

不管在函数体内还是在函数体外 $0 都代表脚本本身

函数递归

用函数的递归方式算阶乘
在这里插入图片描述

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

当 $1 为5时不满足=1的条件会自减1然后继续传参给fa函数,然后还是不满足=1的条件继续自减1之后传参给fa函数,直到减到1为止传参给fa输出的结果为1,将1赋值给b之后执行最后输出的结果是21,21是 fa 2 的输出结果,321是 fa 3 的输出结果,432*1是 fa 4 的输出结果,所以fa 5 的输出结果为5x4x3x2x1=120。

函数库

函数库可以避免多个脚本使用相同的函数,在多个脚本中重复输入。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

如何禁止电脑运行游戏?

在休息的时候,很多人都喜欢使用电脑玩游戏来消磨时间,但是对于未成年人来说,很容易沉迷游戏,从而影响正常的学业和成长。那么如何才能禁止电脑运行游戏呢?下面我们就来了解一下。 除了将电脑游戏卸载之外,还…

markdown甘特图语法介绍

1. 介绍 甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。其通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。 2. 语法 1. 代码通用语法 在 markdown 的 代码模块 中编写甘特图,类型是mermaid&a…

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址:https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 ,安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16G左右…

第三十二章 React路由组件的简单使用

1、NavLink的使用 一个特殊版本的 Link&#xff0c;当它与当前 URL 匹配时&#xff0c;为其渲染元素添加样式属性 <NavLink className"list-group-item" to"/home">Home</NavLink> <NavLink className"list-group-item" to&quo…

Python 密码破解指南:0~4

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 收割 SB 的人会被 SB 们封神&#xff0c;试图唤醒 SB 的人是 SB 眼中的 SB。——SB 第三定律 零、简…

stream笔记

1、 创建流stream 1.1、 Stream 的操作三个步骤 1.2、 stream中间操作 1.2.1 、 limit、skip、distinct 1.2.2、 map and flatMap 1.2.3、 sort 自然排序和定制排序 1.3、 add and andAll difference: 1.4、 终止操作 1.4.1、 allmatch、anyMatch、noneMatch、max、min…

JavaScript通过js的方式来判断一个数奇偶性的代码

以下为通过js的方式来判断一个数奇偶性的程序代码和运行截图 目录 前言 一、通过js的方式来判断一个数奇偶性&#xff08;html部分&#xff09; 1.1 运行流程及思想 1.2 代码段 二、通过js的方式来判断一个数奇偶性&#xff08;js部分&#xff09; 2.1 运行流程及思想 2…

美国新的 AI 研究基金将专注于 6 个领域

美国白宫周四宣布&#xff0c;在 1.4 亿美元的联邦资金支持下&#xff0c;拜登政府将开设七个新的人工智能实验室。 国家科学基金会将在其他政府机构的支持下掌舵运营。这些研究所将专注于六个研究课题&#xff1a; 1. 值得信赖的人工智能&#xff0c;隶属于马里兰大学领导的…

JustFE团队前端代码规范,降本增效,敏感肌可用

背景 &#x1f30f; 近年来&#xff0c;接手各个前端的代码&#xff0c;看着前人屎山&#xff0c;深恶痛绝 为了避免自己或者团队&#xff0c;继续添粪&#xff0c;因此经验总结一番~ 规范化优点&#xff1a; 容易理解&#xff0c;维护性强容易编写&#xff0c;扩展性强精准定…

优化营商环境:打造政策精准服务平台,提高惠政策落实落地时效性

近年来&#xff0c;各级政府部门及产业园区不断加强对于惠企政策的宣传和落实&#xff0c;努力打造优质的营商环境&#xff0c;加大助企纾困力度&#xff0c;以推动经济高质量发展。为了更好地实现这一目标&#xff0c;搭建惠企政策精准服务平台成为了一个非常重要的举措。 搭建…

Apache Zeppelin系列教程第四篇——Interpreter原理分析

Interpreter 其实就是整个项目的核心&#xff0c;代码运行都是在里面进行执行的&#xff0c;首先来看下Interpreter的抽象类 以jdbc-Interpreter为例&#xff0c;可以参考下测试代码(这个代码里面可以直接测试jdbc的sql执行过程和数据返回过程) 参数和介绍可以参考官方文档&am…

CH9329双头线使用说明

1.介绍说明 CH9329双头线是集成了CH9329CH340芯片的成品线&#xff0c;主要作用是使用主控电脑发送串口指令数据来控制被控电脑的键盘以及鼠标的功能。主控电脑和被控电脑可以是同一台电脑&#xff0c;就是能够自己控制自己。支持自定义修改USB的硬件信息&#xff0c;如PID、V…

FTP-HTTP-HTTPS的学习总结

FTP协议的学习 一&#xff0c;学习的要点 ftp的掌握总体架构、了解状态机 请求响应的格式、常用操作码及响应的含义 PORT与PASV的区别、断点续传 上传、下载文件的基本流程 1&#xff0c;FTP的架构主要有两种形式 UserPI&#xff08;用户解释器&#xff09;和ServerPI&…

『面试篇』之网络知识串联(一):DNS域名解析、TCP的建立与关闭

趁着马上就要面试的这个机会&#xff0c;将网络相关的知识进行一个串联复习。前端网络会在面试中遇到的问题其实并不是很多&#xff0c;核心的内容主要是TCP建立的的三次握手、TCP断开的四次挥手、DNS解析的过程、以及前端跨域等。话不多说&#xff0c;我们直接进入正题。 一、…

【STL十八】算法——不修改序列的操作(for_each、count、find、equal、search)

【STL十八】算法——不修改序列的操作&#xff08;for_each、count、find、equal、search&#xff09; 一、简介二、头文件三、分类四、不修改序列的操作1、for_each2、count、count_if3、find、find_if4、euqal5、search 前言&#xff1a;在前面我们讲解容器和函数对象时&…

X.25,帧中继(FR),ATM三种分组交换系统

X.25、帧中继&#xff08;FR&#xff09;、ATM 是流行的三种分组交换系统&#xff0c;它们具有不同的特点。 两个术语&#xff1a; DTE(Data Terminal Equipment) &#xff0c;数据终端设备&#xff0c;如我们的个人电脑、手机。 DCE(Data Circuit Equipment) &#xff0c;数据…

【STM32】基础知识 第十二课 GPIO

【STM32】基础知识 第十二课 GPIO 概述GPIO 简介GPIO 模式GPIO 特点GPIO 配置GPIO 操作施密特触发器案例 概述 本文小白我将来介绍通用输入与输出, GPIO (General-Purpose Input/Output) 在单片机中的应用, 以及如何配合和食用 GPIO 来实现各种功能. GPIO 简介 GPIO 是单片机…

十三、共享内存

文章目录 一、什么是共享内存&#xff08;一&#xff09;共享内存的定义&#xff08;二&#xff09;共享内存的原理&#xff08;三&#xff09;共享内存的理解 二、为什么要有共享内存三、共享内存怎么进行&#xff08;一&#xff09; 共享内存的数据结构&#xff08;二&#x…

【Redis系列】Redis布隆过滤之8亿大数据集实战

序言 即便平凡的日子仿佛毫无波澜&#xff0c;但在某个特定的时刻&#xff0c;执着的努力便会显现出它的价值和意义。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级重要蓝色&#xff1a;用来标记二级重要 …

SPC Control Chart Tools for WPF 3.1 Crack

使用 WPF 的 SPC 控制图工具&#xff0c;将变量控制图&#xff08;X-Bar R、X-Bar Sigma、单个范围、中值范围、EWMA、MA、MAMR、MAMS 和 CuSum 控制图&#xff09;、属性控制图&#xff08;p、np、c、u 和 DPMO 控制图&#xff09;、频率直方图和帕累托图添加到 WPF 和 WPF We…