shell脚本之函数及数组

news2025/1/15 16:37:06

shell脚本之函数及数组

  • 一函数
    • 1.1函数的作用
    • 1.2函数的基本格式
    • 1.3函数的注意事项
    • 1.4函数调用的方法
    • 1.5函数的返回值
    • 1.6函数的传参
    • 1.7在外部调用函数
    • 1.8函数变量的作用范围
    • 1.9函数的递归
  • 二.数组
    • 2.1shell数组的定义
    • 2.2定义属组的方式
    • 2.3数组的数据类型
    • 2.4获取数组的数据列表
    • 2.5获取组长度
    • 2.6获取数组下对应的值
    • 2.7数组的常用操作
      • 2.7.1数组的遍历
      • 2.7.2数组的替换
      • 2.7.3数组删除和指定下标的值删除
      • 2.7.4数组追加元素
      • 2.7.5查看所有数组--declare -a
  • 三.冒泡排序

一函数

1.1函数的作用

  • 语句决定义成函数约等于别名,定义函数,再引用函数
  • 封装的可重复利用具有特定功能的代码

1.2函数的基本格式

 方法一:
 【function】函数名 (){
         命令序列
         【return  x】            #使用return或者exit可以显示的结束函数
      }
     方法二:
     函数名(){
          命令序列
       }

1.3函数的注意事项

1.直接写函数中调用
2.函数直接写函数名同名函数后一个生效
3.调用函数一定要先定义
4.只要先定义了调用的其他函数定义顺序无关

1.4函数调用的方法

示例1:
在这里插入图片描述
在这里插入图片描述
示例2:

在这里插入图片描述

1.5函数的返回值

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

  • 函数的使用规则

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

示例:

在这里插入图片描述

1.6函数的传参

在shell中,调用函数时可以向其传递参数。在函数体内部,通过$n的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…即使用位置参数来实现参数传递

示例

在这里插入图片描述

1.7在外部调用函数

在外部调用命令需要先source一下。然后调用函数,再调用函数中的变量

实例
在这里插入图片描述
示例2:在脚本中调用

在这里插入图片描述

1.8函数变量的作用范围

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

示例:

在这里插入图片描述
示例2:
在这里插入图片描述

1.9函数的递归

函数调用自己本身的函数
实例:求任意数的阶乘

在这里插入图片描述

二.数组

2.1shell数组的定义

  • 数组中可以存放多个值。bash shell只支持一维数组
  • 数据元素的下标由0开始
  • shell数组用括号来表示,元素用“空格”符号分割开
  • 在shell语句中,使用,遍历数组的时候,数组格式要写成 a r r [ @ ] 或 {arr[@]}或 arr[@]{arr[*]}

2.2定义属组的方式

方法一;

在这里插入图片描述
方法二:
在这里插入图片描述

2.3数组的数据类型

  • 数值类型
  • 字符类型:使用“”或‘’定义

示例:
在这里插入图片描述

2.4获取数组的数据列表

示例:
在这里插入图片描述

2.5获取组长度

在这里插入图片描述

2.6获取数组下对应的值

在这里插入图片描述

2.7数组的常用操作

2.7.1数组的遍历

在这里插入图片描述

2.7.2数组的替换

在这里插入图片描述

2.7.3数组删除和指定下标的值删除

在这里插入图片描述

2.7.4数组追加元素

方法一:直接使用下标进行元素追加
在这里插入图片描述
方法二:将数组的长度作为下标进行追加元素

在这里插入图片描述
方法三:使用+进行追加
在这里插入图片描述

2.7.5查看所有数组–declare -a

在这里插入图片描述

三.冒泡排序

在这里插入图片描述

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

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

相关文章

回归预测 | MATLAB实现GRU门控循环单元多输入多输出

回归预测 | MATLAB实现GRU门控循环单元多输入多输出 目录 回归预测 | MATLAB实现GRU门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRU门控循环单元多输入多输出,数据为多输入多输出预测数据,输入10个…

2023电商销售额增幅全球第一!这个国家潜力正在爆发!

随着欧、美等跨境电商市场日趋饱和,拉美地区正逐渐成为全球电商投资的热点。这让该地区增长最强劲的电商市场——阿根廷——成为众多跨境卖家寻求增长与突破的新选择。 那么,阿根廷为什么是跨境卖家扩展电商业务的新机会?阿根廷电子商务市场…

ps变形怎么增加网格? PS怎么变形?

PS图片怎么变形:打开PS,找到需要处理的图片,复制图层,点选“编辑”—“变换”—“变形”,出现变形网格后,按需要操作就可以了。 PS是一款图片编辑的处理软件,它有很多的功能,在图形…

一百五十八、Kettle——Kettle各版本及其相关安装包分享(网盘链接,不需积分、不需验证码) 持续更新、持续分享

一、目的 最近因为kettle9.3的shim问题看了好多博客,都没有网盘分享。后来有一位博主分享了kettle9.2的shim安装包,已经很感谢他,但是是博客分享,下载还需要搞验证码下载码之类的。 kettle9.2的shim安装包下载好后,一…

基于LVQ神经网络的人脸朝向识别

1案例背景 1.1人脸识别概述 人脸识别作为一个复杂的模式识别问题,近年来受到了广泛的关注,识别领域的各种方法在这个问题上各显所长,而且发展出了许多新方法,大大丰富和拓宽了模式识别的方向。人脸识别、检测,跟踪、特征定位等技术近年来一直是研究的热点。人脸识别是人脸应用…

springboot结合shiro实战-身份认证

目录 环境搭建 配置shiro环境 总结 hello,大家好,我们写任何企业级项目基本都会需要做权限,权限包含身份认证和授权。 所谓身份认证,就是证明你是你。 所谓授权就是明白你登录之后能干什么。 现在,让我们用sprin…

根据一棵树的两种遍历构造二叉树

题目 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,…

【Java从0到1学习】09 正则表达式

1. 正则表达式概述 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 正则表达式,又称正规表示法、常规表示法&#xff…

js watermark实现水印效果

2023.8.15今天学习了如何给页面添加水印,效果如下: 1.创建watermark.js文件: import id from "element-ui/src/locale/lang/id";let watermark {} let setWatermark (str) > {let id 1.23452384164.123412415if (document.g…

智安网络|深入比较:Sass系统与源码系统的差异及选择指南

随着前端开发的快速发展,开发人员需要使用更高效和灵活的工具来处理样式表。在这个领域,Sass系统和源码系统是两个备受关注的选项。 Sass系统 Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器,它扩展了CS…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——三段论——第一节——推结论

文章目录 第一节 三段论-推结论题-三段论-结构-推结论:所有A是B;所有B是C;得:所有A是C。(最简单的模型)真题(2011-27)-三段论-推结论真题(2011-28)-三段论-推…

react-router v6版本使用记录

1:首先安装依赖 最基本的使用,引入相关依赖,开箱即用 import { BrowserRouter, Link, Routes, Route } from "react-router-dom" import Home from "./home" import About from "./about"function App () {// …

MapBox历史轨迹

成果实例 思路 思路就是取从起点开始一路setdata吧 分三个图层,一个路径图层,一个飞机图层,一个显示名字的图层,遍历路径图层的点,经过显示名字图层的时候就显示图层,飞机图层的点和角度动态计算&#xff…

COMSOL电磁仿真-网格剖分-边界层

COMSOL电磁仿真-网格剖分-边界层 在低频磁场中,随着磁场的频率增加,金属的集肤效应会逐渐显著,为了解析趋肤层,需要对金属的表面进行网格加密,这一过程主要通过剖分边界层实现,本文分为两部分,第…

【LeetCode】337.打家劫舍Ⅲ

题目 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直…

2023年软件测试岗面试题+答案汇总,也许你例offer就差这一个...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、B/S架构和C/S架…

16.5.4 【Linux】SELinux 政策内的规则管理

SELinux 各个规则的布林值查询 getsebool 如果想要查询系统上面全部规则的启动与否 (on/off,亦即布林值),很简单的通过 sestatus-b 或 getsebool -a 均可! SELinux 各个规则规范的主体程序能够读取的文件 SELinux typ…

flex布局 vs grid布局

问题&#xff1a;一行最多显示3个item&#xff0c;实现最后一行居左 <div class"chart-wrap"><div class"chart-item">图</div><div class"chart-item">图</div><div class"chart-item">图</…

医生如何使用ChatGPT提高工作效率

文章目录 引言案例一&#xff1a;快速获取医学知识案例二&#xff1a;协助患者自我诊断案例三&#xff1a;辅助临床决策案例四&#xff1a;提供在线咨询服务案例五&#xff1a;用病人易于理解的语言总结关键的临床信息案例六&#xff1a;高效整理医疗文件案例七&#xff1a;根据…

报修管理系统的功能有多强大?的修报修管理系统有什么优势?

报修管理系统是一种功能强大的系统&#xff0c;可帮助企业快速响应设备故障和异常情况&#xff0c;并将实时信息反馈给有关人员&#xff0c;以及进行准确的统计分析。通过使用报修管理系统&#xff0c;企业能够极大地提升工作效率&#xff0c;优化运营流程&#xff0c;减少人员…