当前位置: 首页 > article >正文

Linux网络——Shell编程之数组

Linux网络——Shell编程之数组

  • 一、概念
  • 二、数组的定义
  • 三、Shell数组操作
      • 1. 获取数组的所有元素的列表
      • 2. 获取数组的所有元素下标
      • 3.取数组的元素个数
      • 4. 获取数组的某个元素的值
      • 5.删除数组某个元素
      • 6.删除数组
      • 7.数组切片
      • 8.数组字符替换
      • 9.数组追加元素
  • 四、数组在函数的传参

一、概念

数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。 组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。 用于区分数组的各个元素的数字编号称为下标。数组是用于储存多个相同类型数据的集合

特点:
1.数组是相同数据类型的元素的集合。
2.数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。

二、数组的定义

定义数组的四种方式:
方式一:
数组名=(值0 值1 值2 ...)
在这里插入图片描述
方式二:
数组名=([0]=值 [1]=值 [2]=值 ...)
在这里插入图片描述
方式三:
列表名="值0 值1 值2 ..."
数组名=($列表名)
在这里插入图片描述
方式四:
数组名[0]="值"
数组名[1]="值"
数组名[2]="值"
...

在这里插入图片描述

三、Shell数组操作

1. 获取数组的所有元素的列表

语法:echo ${数组名[@]}echo ${数组名[*]}
在这里插入图片描述

2. 获取数组的所有元素下标

语法:echo ${!数组名[@]}echo ${!数组名[*]}
在这里插入图片描述

3.取数组的元素个数

语法:echo ${#数组名[@]}echo ${#数组名[*]}
在这里插入图片描述

4. 获取数组的某个元素的值

语法:echo ${数组名[下标]}
在这里插入图片描述

5.删除数组某个元素

语法:unset 数组名[下标]
在这里插入图片描述

6.删除数组

语法:unset 数组名
在这里插入图片描述

7.数组切片

语法:echo ${数组名[@]:下标:长度}
在这里插入图片描述

8.数组字符替换

语法:echo ${数组名[@]/旧字符/新字符}

在这里插入图片描述

9.数组追加元素

指定位置添加(直接赋予新值覆盖原来的元素)
语法:数组名[下标]=值
在这里插入图片描述

末尾追加元素
语法:数组名[${#数组名[*]}] =新元素数组名[${#数组名[@]}] =新元素
在这里插入图片描述
进行末尾多元素追加
语法:数组名=("${数组名[@]}" 值1 值2 ......值N)
在这里插入图片描述
直接末尾追加多元素
语法:数组名+=(值1 值2 ......值N)

在这里插入图片描述

四、数组在函数的传参

要求:一个遍历数组的函数,并且让数组里的元素翻倍输出

#!/bin/bash
a=0
test(){
local arr=$@
for i in ${arr[@]}
do
    let i*=2
    arr[$a]=$i
    let a++
done
echo ${arr[@]}
}
############### main ###############
read -p "请输入一个数组:" num
arr=($num)
echo "数组翻倍后为:$(test ${arr[@]}) "

在这里插入图片描述


http://www.kler.cn/a/18500.html

相关文章:

  • 高性能分布式缓存Redis-高可用部署
  • 机器视觉和计算机视觉的区别
  • SDL渲染器和纹理
  • 【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
  • Local Dimming和Mini LED简介
  • 新的服务器Centos7.6 安卓基础的环境配置(新服务器可直接粘贴使用配置)
  • 天猫数据分析:2023年Q1天猫净水器品牌销售TOP10排行榜
  • 3. SQL底层执行原理详解
  • MVC分部视图的使用:Html.Partial/RenderPartial,Html.Action/RenderAction,RenderPage
  • 硬盘数据突然消失怎么回事?硬盘数据突然消失怎么找回
  • 【运动规划算法项目实战】八叉树地图(附ROS C++代码)
  • 如何用100天彻底学会Python?
  • JavaScript class和继承的原理
  • 【Queue新技法】用双数组实现一个队列 C++
  • C++类和对象(上)
  • 华为OD机试真题 Java 实现【猜字谜】【2023Q2】
  • Adobe考试
  • 【MySQL】索引
  • 字节跳动发放年终奖,远超预期~
  • 将sublime中的自定义代码片段snippet 转为vscode可用的代码片段 (cursor可用)
  • Java笔记_17(异常、File)
  • uboot 启动内核代码分析
  • C++结构体分别在:栈空间、堆空间、静态存储区中初始化
  • 【计算机专业漫谈】【计算机系统基础学习笔记】W2-2-1 原码和移码表示
  • vue概述
  • Go数据机构----栈与队列