shell脚本-函数

一、函数

1.函数的定义和格式

函数定义:封装的可重复利用的具有特定功能的代码

先定义函数,再调用函数,注意顺序

函数类似于命令的别名,别名一些简单的小命令

函数是某一个脚本的别名,有些脚本会重复使用

函数格式:在函数中如需调用函数,直接写函数名,同名函数后一个生效,调用函数一定要先定义,只要先定义了调用的其他函数定义顺序无关

2.函数的调用

查看当前操作系统:

函数备份yum线上源,创建yum本地源和清理缓存安装httpd:

3.函数的返回值

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

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

解决大于255的方法:

4.函数传参

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

5.函数变量的作用范围

1.函数在shell脚本中仅在当前shell环境中有效

2.shell脚本中变量默认全局有效

3.将变量限定在函数内部使用local命令

shell脚本中变量默认全局有效:

将变量限定在函数内部使用local命令:

6.函数的递归

函数调用自己本身的函数

阶乘:

二、数组

1.数组基础

1.数组中可以存放多个值,Bash Shell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与PHP类似)

2.与大部分编程语音类似,数组元素的下标由0开始

3.shell数组用括号来表示,元素用空格符号分隔开

4.在shell语句中,使用数据的时候,数组格式要写成${arr[@]}或${arr[*]}

2.数组的语法格式

1.数组名=(value1 value2 .... valuen)

arr_number=(1 2 3 4 5 6 7 8 9)

2.数组名=([0]=value0 [1]=value0 [2]=value0...)

arr_number=([0]=1 [1]=2 [2]=3 [3]=4)

3.列表名:"value1 value2 valueN..."

数组名=($列表名)

list_number="1 2 3 4 5 6"

arr_number=($list_number)

4.数组名[0]="value"

数组名[1]="value"

数组名[2]="value"

arr_number[0]=1

arr_number[1]=2

arr_number[2]=3

3.数组的数据类型

1.数值类型

2.字符类型

3.使用”“(双引号)或者’‘(单引号)定义

4.获取数组的长度

5.获取数组的数据列表

6.获取数组下标对应的值

7.数组的遍历

8.数组切片

9.数组替换

10.数组删除和指定下标的值删除

11.数组追加元素

直接使用下标进行元素追加:

使用+=进行追加:

查看所有数组:

注:普通数组的下标是数值,默认普通数组

关联数组的下标是有含义的字符,我要先声明我是关联数组下标中

12.数组排序

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解

文章目录 前言1.模拟数字转换(ADC)1.1ADC的关键步骤: 2.数字模拟转换(DAC)2.1DAC 的基本流程包括: 3.PCM数据3.1PCM 数据的关键要素包括: 4.WAV文件4.1 WAV的构成4.2WAV文件的标准块结构4.3WAV的…

浙江大学数据结构MOOC-课后习题-第六讲-图3 六度空间

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 心路历程 当我看到慕课上对这题的简介写的是: 不过实现起来还是颇有码量的,有时间就尝试一下。 我甚至在想要不要在距离图书馆闭馆仅2个小时的时候,挑战这道题&#x…

Linux: network: TCP: zero window size/window full 示例

最近遇到一个问题,当前机器的CPU使用率非常高,然后导致其中一个程序处理socket的数据过慢,然后出现下面的zero的示例。 下面是在接收buff用光的时候,发出的 TCP zeroWindows的消息 这种问题就是内存,CPU,网速之间的性能取舍。具体解决的话,需要看具体的需要是什么样的?…

Monocular Model-Based 3D Tracking of Rigid Objects:2005年综述

1 Introduction 在视频序列中跟踪一个物体意味着在物体或摄像机移动时,持续识别其位置。根据物体类型、物体和摄像机的自由度以及目标应用的不同,有多种方法可供选择。二维跟踪通常旨在跟踪物体或物体部分的图像投影,这些物体的三维位移会导…

(十二)统计学基础练习题六(选择题T251-300)

本文整理了统计学基础知识相关的练习题,共50道,适用于想巩固统计学基础或备考的同学。来源:如荷学数据科学题库(技术专项-统计学二)。序号之前的题请看往期文章。 251) 252) 253) 2…

测试驱动编程(4)模拟消除依赖

文章目录 测试驱动编程(4)模拟消除依赖模拟框架Mockito什么要模拟名词解释Mockito常用注解Mockito常用静态方法Mockito测试流程三部曲基础用法可变返回结果验证verfily对象监视spy 示例实战升级版井字游戏需求一需求二需求三 总结 测试驱动编程(4)模拟消除依赖 模拟框架Mockit…

硬盘文件可以直接剪切到另一个盘吗?分享方法与注意事项

在数字化时代,硬盘成为了我们存储和管理文件的重要设备。随着数据量的不断增长,我们有时需要将文件从一个硬盘盘符转移到另一个盘符,以便更好地组织和利用存储空间。硬盘文件剪切操作就是实现这一目标的有效方式之一。本文将详细介绍如何直接…

医疗小程序源码SpringBoot2.X + Vue + UniAPP全栈开发

源码说明: 看到好多坛友都在求SpringBoot2.X Vue UniAPP,全栈开发医疗小程序 – 带源码课件,我看了一下,要么链接过期,要么课件有压缩密码。 特意整理了一份分享给大家,个人认为还是比较全面的。 希望…

day16--集合进阶(Set、Map集合)

day16——集合进阶&#xff08;Set、Map集合&#xff09; 一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set ne…

深度解析Nginx配置文件:从全局块到upstream块的探索之旅

Nginx配置文件的简介 在浩瀚的互联网世界中&#xff0c;Nginx就如同一座大型交通枢纽&#xff0c;将访问者的请求精准地引导到正确的服务终点。而这一切&#xff0c;都离不开一个神秘而重要的角色——Nginx配置文件。这个文件&#xff0c;就像是一份详尽的路线图&#xff0c;为…

【动手学PaddleX】谁都能学会的基于迁移学习的老人摔倒目标检测

本项目使用PaddleX搭建目标检测模块&#xff0c;在一个精选的数据集上进行初步训练&#xff0c;并在另一个老年人跌倒检测的数据集上进行参数微调&#xff0c;实现了迁移学习的目标检测项目。 1.项目介绍 迁移学习是非常有用的方法&#xff0c;在实际生活中由于场景多样&…

Maven查看项目中的pom依赖

一&#xff0c;背景 Spring项目上线前进行了安全扫描&#xff0c;一些安全漏洞扫出来了&#xff0c;需要做一些处理。扫描的结果如下&#xff1a; [安装包路径:/usr/local/opr-platform/opr-platform.jar -> BOOT-INF/lib/commons-compress-1.19.jar 当前版本:1.19 存在漏洞…

HTML静态网页成品作业(HTML+CSS)——家乡沅陵介绍网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

加速模型训练 GPU cudnn

GPU的使用 在定义模型时&#xff0c;如果没有特定的GPU设置&#xff0c;会使用 torch.nn.DataParallel 将模型并行化&#xff0c;充分利用多GPU的性能&#xff0c;这在加速训练上有显著影响。 model torch.nn.DataParallel(model).cuda() cudnn 的配置&#xff1a; cudnn.…

R可视化:另类的柱状图

介绍 方格状态的柱状图 加载R包 knitr::opts_chunk$set(echo TRUE, message FALSE, warning FALSE) library(patternplot) library(png) library(ggplot2) library(gridExtra)rm(list ls()) options(stringsAsFactors F)导入数据 data <- read.csv(system.file(&qu…

TM7707 SOP-16 双通道全差分输入的24位A/D转换芯片

TM7707是一款24位A/D转换芯片&#xff0c;主要用于低频测量&#xff0c;并能直接将传感器测量的微小信号进行A/D转换。它具有高分辨率、良好的抗噪声性能&#xff0c;以及低电压和低功耗的特点。这些特性使得TM7707非常适合用于以下应用领域&#xff1a; 1.仪表测量&#xff1a…

idea 中配置 Java 注释模板

引言&#xff1a; 在软件工程中&#xff0c;良好的代码注释习惯对于项目的可维护性和可读性至关重要。IntelliJ IDEA&#xff0c;作为一款强大的Java开发IDE&#xff0c;提供了灵活的注释模板配置功能&#xff0c;帮助开发者快速生成规范的代码注释。本文将详细介绍如何在Inte…

OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI(一)

引言 在Android中Java可以通过JNI 与C/C 通信&#xff0c;而在OpenHarmony 中前段语言目前是ETS&#xff0c;那么OpenHarmony中的 “JNI” 角色是什么呢&#xff1f; 一、NAPI概述 NAPI全称Native Application Programming Interface&#xff08;最新版的文档已经改为Node-A…

AI炒股:批量下载东方财富choice中的投资数据

工作任务&#xff1a;批量下载东方财富choice中的创投数据 在ChatGPT中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;写一个关于键盘鼠标自动化操作的Python脚本&#xff0c;具体步骤如下&#xff1a; 打开东方财富choice软件&#xff0c;软件路径为&#xff1…

企业微信hook接口协议,ipad协议http,语音转文字

语音转文字 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信msgid是int要转文字的语音消息id 请求示例 {"uuid":"a4ea6a39-4b3a-4098-a250-2a07bef57355","msgid":1063645 } 返回示例 {"data&…