首页 > 系统相关 >shell脚本——函数与数组

shell脚本——函数与数组

时间:2023-02-05 09:22:04浏览次数:61  
标签:shell 定义 数组名 数组 变量 函数

 


Shell脚本之函数及数组

一、函数

函数的作用

语句块定义成函数约等于别名,定义函数,再引用函数

封装的可重复利用的具体特定功能的代码

函数的基本格式

法一:

[function]   函数名 (){

        命令序列

        [return  x]

}

                        //使用return或者exit可以显示的结束函数

法二:

函数名(){

        命令序列

}

函数注意事项

直接写函数中调用

函数直接写函数名同名函数后一个生效

调用函数一定要先定义

只要先定义了调用的其他函数定义顺序无关

函数调用方法

例1:

 例2:

函数的返回值

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

函数的使用原则

函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码

退出状态码必须是0~255,超出时值将为除以256取余

例:

 函数的传参

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

例:

外部调用函数 

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

例1:

 例2:在脚本中调用

 函数变量的作用范围

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

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

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

例1:

 例2:

函数的递归

 函数调用自己本身的函数

例:求任意的阶乘

二、数组 

数组的定义

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)

数组元素的下标由 0 开始。

Shell 数组用括号来表示,元素用"空格"符号分割开

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

定义数组的方法

法一:数组名=(value1 value2 ... valuen)

法二: 数组名=([0]=value1 [1]=value2 [2]=value3 ...)

法三:

数组名[0]="value"

数组名[1]="value"

数组名[2]="value"

数组的数据类型 

数值类型

字符类型:使用" " 或 ' ' 定义

例:

 获取数组的数据列表

echo  ${数组名[*]}

echo  ${数组名[@]}

例:

获取数组长度 

echo  ${数组名#[*]}

echo  ${数组名#[@]}

例:

获取取数组下标对应的值 

数组名=(元素0  元素1  元素2  ...)                        //定义数组

echo   ${数组名[索引值]}                                         //输出数组索引值对应的元素,索引值从0开始

例:

数组的常用操作

数组的遍历

数组的切片 

数组的替换

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

数组追加元素

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

数组名[下标]=变量

法二:将数组的长度作为下标进行追加元素

数组名[${数组名[@]}] =变量名

 法三:使用 “ + - ” 进行追加

数组名+=(变量1  变量2)

查看所有数组

declare -a

三、冒泡排序

 

 

标签:shell,定义,数组名,数组,变量,函数
From: https://www.cnblogs.com/sj5426/p/17092857.html

相关文章

  • shell脚本——变量与条件语句
     文章目录 Shell:一般我们是用图形界面和命令去控制计算机,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),由于安全、复杂、繁琐......
  • shell脚本——正则表达式
     LinuxShell脚本之正则表达式一、常见的管道命令sort命令sort命令可针对文本文件的内容,以行为单位来排序格式:sort [选项] 参数常用选项选项  ......
  • 两数组交集
    给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。constintersection=(nums1,nums......
  • 数组中找到与目标值最接近的数字
    //二分法O(logn)constfindNearestTarget=(nums=[1,2,6,9,10],target=3)=>{letstartIdx=0,endIdx=nums.length-1;while(star......
  • 析构函数和构造函数的特点(在汇编中如何识别构造和析构)
    1.构造函数1.1概念​ 常用来完成对象生成时的数据初始化工作,支持函数重载,不可定义返回值,返回值为对象首地址,即this指针拷贝构造函数:参数为对象地址,返回值为this指针1......
  • Java 实例 - int数组转化成List简便的方法
    如下:@Testpublicvoidtest5(){int[]array={1,2,5,5,5,5,6,6,7,2,9,2};/*int[]转list*///方法一:需要导入apacheco......
  • 《人工智能:线代方法》 第二部分问题求解 通过搜索进行问题求解(4) 启发式函数
    《人工智能:线代方法》第二部分问题求解通过搜索进行问题求解(4)3.6启发式函数启发式函数h(n)告诉A*从任意结点n到目标结点的最小代价评估值。选择一个好的启发式函数......
  • 用指针实现数组的打印以及地址
    中间是我拿来比较的,看看是否输出一样//指针与数组的打印和地址intmain(){intarr[]={1,2,3,4,5,6,7,8,9,0};int*p=arr;intsz=sizeof(arr)/sizeof(arr[0]);......
  • #yyds干货盘点# LeetCode面试题:寻找两个正序数组的中位数
    1.简述:给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。 示例1:输入:n......
  • java基础:数组
    概述数组是相同类型数据的有序集合可以是任何类型每一个数据被称为该数组的一个数组元素,可以使用下标访问每一个元素下标从0开始,按顺序递增数组长度是固定的,创建后不......