iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Shell中数组以及其相关操作的详细实例
  • 729
分享到

Shell中数组以及其相关操作的详细实例

shell数组定义shell数组排序shell数组循环 2022-06-04 23:06:47 729人浏览 八月长安
摘要

shell中数据类型不多,比如说字符串,数字类型,数组。数组是其中比较重要的一种,其重要应用场景,可以求数组长度,元素长度,遍历其元素,元素切片,替换,删除等操作,使用非常方便。 Shell中的数组不像java/C,只能

shell中数据类型不多,比如说字符串,数字类型,数组。数组是其中比较重要的一种,其重要应用场景,可以求数组长度,元素长度,遍历其元素,元素切片,替换,删除等操作,使用非常方便。

Shell中的数组不像java/C,只能是一维数组,没有二维数组;数组元素大小无约束,也无需先定义数组的元素个数;但其索引则像JAVA/C/python,从0开始,下面其常用的方式进行总结.

【数组声明】

Shell中数组以及其相关操作的详细实例

备注:

1) 不像JAVA/C等强编程语言,在赋值前必须声明;SHELL只是弱编程语言,可事先声明也可不声明;

2) 用unset来撤销数组,可用unset array_name[i]来删除里面的元素

【数组定义】

Shell中数组以及其相关操作的详细实例

备注:

1) 数组中的元素,必须以"空格"来隔开,这是其基本要求;

2) 定义数组其索引,可以不按顺序来定义,比如说:names=([0]=Jerry [1]=Alice [2]=David [8]=Wendy);

3)字符串是SHELL中最重要的数据类型,其也可通过($str)来转成数组,操作起来非常方便;

【数组长度】

Shell中数组以及其相关操作的详细实例

备注:

1) 使用${array_name[@]} 或者 ${array_name[*]} 都可以全部显示数组中的元素

2) 同样道理${#array_name[@]} 或者 ${#array_name[*]}都可以用来求数组的长度

3)求数组中元素的长度方法有很多,相当于求字符JNnAPo串的长度

【数组索引】


[root@locathost ~]# s="A,B,C,D"
[root@locathost ~]# a=(`echo $s | tr ',' ' '`)  # 将字符串转变成数组
[root@locathost ~]# echo ${!a[@]}        # 求数组中的索引 
0 1 2 3

元素删除】 


[root@localhost ~]# a=(A B C D)
[root@localhost ~]# unset a[2]     # 删除索引为2的元素
[root@localhost ~]# echo ${a[@]}    # 显示删除后的元素
A B D

【数组遍历】

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

备注:

1) 可以使用标准的for循环,这种类C语言的方式来遍历数组中的元素

2) for 元素 in 元素集(数组) 这种类Python的方式来遍历数组

3)从代码可读性与执行速度来看,推荐使用第二种方式

【数组赋值】

Shell中数组以及其相关操作的详细实例

备注:

1) 第一种是给已经存在的元素项重新赋值

2) 当然也可以给不存在的索引添加赋值,可以看下面的示例

【数组添加】

Shell中数组以及其相关操作的详细实例

【数组切片】

数组切片

Shell中数组以及其相关操作的详细实例

元素切片

Shell中数组以及其相关操作的详细实例

备注:

1) 通用的格式${array[@]:起始位置:长度},中间以":"隔开,如果第二项省略的话,就取后面所有的项

2) 切片后返回的是字符串,可以通过 新数组=(${旧数组[@]:索引:长度})来索引,参见上面最后一个例子

3) 区别于Python之一:起始位置可以为负数,但必须以放在()中,长度不能为负数

4)区别于Python之二:第二项在Python里面是结束索引,在Shell则代表所取元素的长度

5) 区别于Python之三:Python可以通过 list[-1:-4:-2]来反向取数,在Shell则实现不了

【数组替换】

${array[@]/x/y}     最小匹配替换,每个元素只替换一次

${array[@]//x/y}    最大匹配替换,每个元素可替换多次

${array[@]/x/}      最小匹配删除,只删除一个符合规定的元素

${array[@]//x/}     最大匹配删除,可删除多个符合规定的元素

Shell中数组以及其相关操作的详细实例

${array[@]/#x/y}     从左往右匹配替换,只替换每个元素最左边的字符

${array[@]/%x/y}     从右往左匹配替换,只替换每个元素最右边的字符

Shell中数组以及其相关操作的详细实例

【数组删除】

#  每个元素,从左向右进行最短匹配

## 每个元素,从左向右进行最长匹配

%  每个元素,从右向左进行最短匹配

%% 每个元素,从右向左进行最长匹配

Shell中数组以及其相关操作的详细实例

【数组应用】

示例一: 将ifconfig命令取到的本地IP: 127.0.0.1逐行显示出来

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例二: 模拟堆栈的push,pop,shift,unshift操作

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例三: 在1-10间,随机生成10个不重复的数,将其放置于数组中

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

备注:

1) 生成[1,10]范围内不重复的随机整数,并保存到数组array中

2) seq 1 10 用于生成1~10的整数序列(包含边界值1和10)

3) awk中的rand()函数用于随机产生一个0到1之间的小数值(保留小数点后6位)

4)rand()只生成一次随机数,要使用srand()函数使随机数滚动生成

5) 括号里留空即默认采用当前时间作为随机计数器的种子,这样以秒为间隔,随机数就能滚动随机生成了

6) 由于以秒为间隔,所以如果快速连续运行两次脚本(1s内),你会发现生成的随机数还是一样的

示例四: 将字符串处理后转为为数组,再对其打印输出

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例五: 用read -a参数,从标准输入中读取数组,再做操作

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例六:  判断某个变量,是否在数组中,在输出YES,否输出NO

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例七:  对数组中的元素进行排序

Shell中数组以及其相关操作的详细实例

示例八:  将/etc/passwd文件中以:分隔的第一列,即用户名放置于一个数组中

Shell中数组以及其相关操作的详细实例

示例九:  将1-8,每个数自乘后输出

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例十:  借助数组来设置SHELLS的环境变量

Shell中数组以及其相关操作的详细实例

示例十一:  设置IFS,读取文件内容示例

Shell中数组以及其相关操作的详细实例

示例十二:  利用eval,模拟实现数组的功能

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例十三:  利用数组来实现冒泡排序

思路:会重复地走访过要排序的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。越大的元素会经由交换慢慢“浮”到数列的顶端

Shell中数组以及其相关操作的详细实例

脚本输出:

Shell中数组以及其相关操作的详细实例

示例十四:  利用数组来求最大值

Shell中数组以及其相关操作的详细实例

脚本输出

Shell中数组以及其相关操作的详细实例

总结

到此这篇关于Shell中数组以及其相关操作的文章就介绍到这了,更多相关Shell数组操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: Shell中数组以及其相关操作的详细实例

本文链接: https://www.lsjlt.com/news/21329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • shell中数组的定义及操作
    目录一、shell中数组的几种定义方式:二、数组的打印和输一、shell中数组的几种定义方式: 方法一: [root@localhost ~]# array=(1 2 3) [root@localhost ~]# ech...
    99+
    2023-05-12
    shell 数组定义 shell 数组操作
  • php的ini文件相关操作函数的详细介绍
    本篇内容介绍了“php的ini文件相关操作函数的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在小公司,特别是创业型公司,整个服务器...
    99+
    2023-06-20
  • 关于Java数组查询的相关问题及实例
             在做数组查询的过程中,我们有时候会遇到一些问题,下面就跟随作者一起解答这些问题。     &...
    99+
    2023-05-31
    java 数组 查询
  • java数组及arrays类对数组的操作实例
    数组的初始化有两种方式静态初始化: 初始化时由程序员显示置顶每个数组的初始值,由系统决定数组长度。如:int[] a1 = new int[] {1,2,3,4};...
    99+
    2023-05-31
    数组 arrays
  • pytorch中LN(LayerNorm)及Relu和其变相输出操作的示例分析
    这篇文章主要介绍pytorch中LN(LayerNorm)及Relu和其变相输出操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!主要就是了解一下pytorch中的使用layernorm这种归一化之后的数据...
    99+
    2023-06-15
  • Python中的元组(Tuple)操作实例详解
    目录引言1.元组的 创建 && 访问(1)元组的创建:(2)访问:2.元组的 修改 && 删除(1)元组的修改:(2)元组的删除:3.元组的内置方法4...
    99+
    2024-04-02
  • 操作系统中的Hosts文件工作原理和作用及其详细介绍
    一、什么是Hosts文件? Hosts是一个没有扩展名的系统文件,Hosts文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,实现DNS的功能,它可以由计算机的用户进行控制。可以用记事本等...
    99+
    2023-06-16
    操作系统 Hosts文件 工作原理 作用 文件 工作 原理 Hosts
  • Python中关于列表的常规操作范例以及介绍
    目录1.列表的介绍 2.打印出列表的数据1.我们可以根据下标取值进行打印2.使用for循环遍历3.使用while循环遍历3.列表的添加操作1.append()方法2.extend()...
    99+
    2024-04-02
  • Python中关于字典的常规操作范例以及介绍
    目录1.字典的介绍2.访问字典的值(一)根据键访问值(二)通过get()方法访问值3.修改字典的值4.添加字典的元素(键值对)5.删除字典的元素6.字典常见操作1.len 测量字典中...
    99+
    2024-04-02
  • vue中数据劫持以及操作数组的坑有哪些
    这篇文章将为大家详细讲解有关vue中数据劫持以及操作数组的坑有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。TL;DR给data添加新属性的时候vm.$set(vm....
    99+
    2024-04-02
  • linux下的回收站以及U盘中的.Trash文件夹相关操作介绍
    这篇文章主要讲解了“linux下的回收站以及U盘中的.Trash文件夹相关操作介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下的回收站以及U盘中的.Trash文件夹相关操作介绍...
    99+
    2023-06-13
  • 阿里云服务器中转设置的位置及其详细操作指南
    阿里云服务器是阿里巴巴集团提供的一种云服务器服务,它为用户提供了一种便捷、安全、高效的云计算解决方案。本文将详细介绍阿里云服务器中转设置的位置以及详细操作指南。 阿里云服务器中转设置的位置:阿里云服务器的中转设置一般位于服务器的系统设置中,...
    99+
    2023-11-01
    阿里 操作指南 位置
  • Vue项目中Api的组织以及返回数据处理的操作
    这篇文章主要介绍“Vue项目中Api的组织以及返回数据处理的操作”,在日常操作中,相信很多人在Vue项目中Api的组织以及返回数据处理的操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • java中构造方法及this关键字的用法实例详解(超详细)
    目录初识构造方法 构造方法的使用 初识this this.xx的用法this()用于构造函数的调用总结初识构造方法  我们上篇讲了java中类...
    99+
    2024-04-02
  • 从零开始学习Java中的Shell脚本:数组和文件操作详解!
    在Java中,Shell脚本是一种非常重要的编程方式,它可以让我们更加方便地完成一些基本的操作。在本文中,我们将会深入讲解如何在Java中使用Shell脚本完成数组和文件操作。 一、数组操作 在Java中,数组操作是非常常见的。我们可以使...
    99+
    2023-10-31
    shell 数组 文件
  • Python中的Numpy面向数组编程常见操作实例分析
    这篇文章主要介绍“Python中的Numpy面向数组编程常见操作实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的Numpy面向数组编程常见操作实例分析”文章能帮助大家解决问题。...
    99+
    2023-07-02
  • c语言中回调函数的使用以及实际作用详析
    目录前言一、通过这节课程你能掌握以下知识:二、程序架构的核心理念和需求三、回调函数的作用1.输出型2.输入型四、掌握回调函数的程序编写总结前言 今天给大家讲一下芯片/模块厂家写SDK...
    99+
    2024-04-02
  • shell中的数组操作小结和冒泡排序实现脚本的方法教程
    本篇内容主要讲解“shell中的数组操作小结和冒泡排序实现脚本的方法教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell中的数组操作小结和冒泡排序实现脚本的方法教程”吧!shell数组介...
    99+
    2023-06-09
  • Shell脚本在Java开发中的实践:数组和文件操作技巧全掌握!
    在Java开发中,我们经常需要使用Shell脚本来完成一些系统级别的任务,比如文件操作、进程管理等。而Shell脚本中的数组和文件操作技巧则是我们必须掌握的基本功。本文将为大家介绍Shell脚本中的数组和文件操作技巧,并提供相应的代码示例...
    99+
    2023-10-31
    shell 数组 文件
  • 异步编程和关键字:Go语言中数组操作的最佳实践。
    异步编程和关键字:Go语言中数组操作的最佳实践 随着计算机技术的不断发展,异步编程已经成为了一种趋势。异步编程可以让程序在执行任务的同时,继续执行其他任务,从而提高程序的效率。在Go语言中,异步编程是非常重要的,因为Go语言的并发特性非常强...
    99+
    2023-10-02
    数组 异步编程 关键字
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作