iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >【shell脚本编写】shell 数组的使用
  • 296
分享到

【shell脚本编写】shell 数组的使用

php开发语言linux 2023-09-03 13:09:38 296人浏览 安东尼
摘要

数组 shell基础-04 数组(定义数组、查看数组、访问数组、删除数组、关联数组、二维数组) shell脚本之数组 打印数组_shell数组和字典 速查 操作命令作用创建数组declare

数组

速查

操作命令作用
创建数组declare -a array1=‘([2]=“zhangfei”)’逐个元素定义数组
array2=(sunquan zhouyu “lu su”)从列表定义数组 注意括号就相当于数组的定义
array3=(`cat /etc/user_name.txt`)从文件定义数组
array1+=(value1)
array1+=(value1,value2…valueN)
array1+=(${var1})
append【+=】方式创建数组,注意加括号()
删除unset array1[0]删除元素:unset 数组名[索引]
unset array1删除数组:unset 数组名
打印数组内容echo ${array1[@]}打印所有值
echo ${array1[0]}打印单个值
echo ${array1[@]:2:2}${数组名[@]:M:N} 打印多个值,打印下标M开始的N个元素
此处就是下标2开始的2个元素
echo ${#array1[@]}统计数组元数的个数
echo ${!array1[@]}获取数组的索引(也就是 key)
for i in “${array1[*]}”; do
echo $i;
done
遍历数组
数组追加元素array_name+=(value1…valueN)使用+=进行追加 常用!
array_name[index]=value直接使用下标进行元素的追加
array_name[${#array_name[@]}]=value将数组的长度作为下标进行追加元素 (因为数组下标从0开始,目前数组长度是无值的)
数组重新赋值array_name=(“${array_name[@]}” value1 …valueN)> 双引号不能省略,否则,当数组array name中存在包含空格的元素时会按空格将元素拆分成多个
> 不能将“@”替换为 “ * ”,如果替换为“ * ”,不加双引号时与"@"的表现一致,加双引号时,会将数组array name中的所有元素作为一个元素添加到数组中

数组创建与删除

# 1. 逐个元素定义数组# 说明:不必从0开始定义,会自动按索引排序array1[3]=zhangfei# declare -a 查看所有数组# declare -a |grep array   查看刚定义的数组declare -a array1='([2]="zhangfei")'# 2. 从列表定义数组  注意括号就相当于数组的定义array2=(sunquan zhouyu "lu su")# 3. 从文件定义数组array3=(`cat /etc/user_name.txt`)# 4. append【+=】方式创建数组,注意加括号()array1+=(value1)array1+=(value1,value2...valueN)array1+=${var1}# 5. 删除元素# 删除元素:unset 数组名[索引]unset array1[0]# 删除数组:unset 数组名unset array1

打印数组内容(数量,key 等)

访问数组中的单个元素:

  • 语法:${数组名[索引]}

访问数组中多个元素(切片):

  • 语法:${数组名[@]:M:N}
# 1. 打印所有值echo ${array1[@]}liubei guanyu zhangfei# 2. 打印单个值echo ${array1[0]}liubei# 3. 打印多个值,切片(数组下标也是从0开始,此处表示【打印从下标1开始2个元素(也就当前和后一个)】)echo ${array1[@]:1:2}guanyu zhangfei# 4. 统计数组元数的个数echo ${#array1[@]}3# 注意:即使是从索引1开始取数,仍然会显示总数。测试如下:echo ${#array1[@]:1}3# 5. 获取数组的索引(也就是 key)echo ${!array1[@]}0 1 3# 6. 遍历数组[root@localhost data]#for i in "${a[*]}"; do echo $i; done5 3 45 99

数组追加元素

# 1. 方法一 :直接使用下标进行元素的追加array_name[index]=value# 2. 方法二:将数组的长度作为下标进行追加元素 (因为数组下标从0开始,目前数组长度是无值的)array_name[${#array_name[@]}]=value# 3. 方法三:重新赋值> 双引号不能省略,否则,当数组array name中存在包含空格的元素时会按空格将元素拆分成多个> 不能将“@”替换为 “ * ”,如果替换为“ * ”,不加双引号时与"@"的表现一致,加双引号时,会将数组array name中的所有元素作为一个元素添加到数组中array_name=("${array_name[@]}" value1 ...valueN)# 4. 方法四:使用+=进行追加 常用!array_name+=(value1...valueN)

使用示例

#!/bin/bash echo "shell定义字典"#必须先声明declare -A dicdic=([key1]="value1" [key2]="value2" [key3]="value3") #打印指定key的valueecho ${dic["key1"]}#打印所有key值echo ${!dic[*]}#打印所有valueecho ${dic[*]} #遍历key值for key in $(echo ${!dic[*]})do        echo "$key : ${dic[$key]}"done echo "shell定义数组" #数组list=("value1" "value2" "value3")#打印指定下标echo ${list[1]}#打印所有下标echo ${!list[*]}#打印数组下标echo ${list[*]}#数组增加一个元素list=("${list[@]}" "value3")

误区注意

  • 数组不是单纯的数组,可以视为【字典】和【数组】的结合

    1. array1[3]=zhangfei 中的 【3】只能是视作 key,不具有排序作用
    2. array1+="test" 新增元素,并没有放到array1[4]位置,而是补齐之前的空位,补到了array1[0]
    3. 数组会自动对新加入的元素进行排序,会忽略空闲位置echo ${array1[@]:0:2},可以看到了打印对应的元素内容test zhangfei
  • append【+=】方式创建数组,注意加括号()

# 创建数组$ array1[3]=zhangfei# 查看刚创建的数组$ declare -a | grep arraydeclare -a array1='([3]="zhangfei")'# 可以到定义的 3 只是 key,与数组无关,数组会【自动排序】$ echo ${array1[@]:1:2}zhangfei$ echo ${array1[@]:1:1}zhangfei# 数组新增元素$ array1+="test"# 可以看到新增的元素 被赋予一个 key  为 0 $ declare -a | grep arraydeclare -a array1='([0]="test" [3]="zhangfei")'# 查看数组的长度$ echo ${#array1[@]}2# 查看数据的key  相当于查看 dict 的 key$ echo ${!array1[@]}0 3# 可以看到 没找到新增的元素$ echo ${array1[@]:1:1}zhangfeiecho ${array1[@]:1:3}zhangfei# 查看数组位置  可以看到新增的元素 加到 0 位置$ declare -a | grep arraydeclare -a array1='([0]="test" [3]="zhangfei")'$ echo ${array1[@]:0:1}test$ echo ${array1[@]:0:2}test zhangfei$ ip1=10.10.10.1$ ip2=20.20.20.2# 此处是直接 增添元素 创建数组$ ips+=${ip1}# 但查找不到$ declare -a | grep ips$ echo ${ips[@]}10.10.10.1$ ips+=${ip2}# 同时打印全部  没有空格进行间隔$ echo ${ips[@]}10.10.10.120.20.20.2# 可以看到全都存储在 key 为 0 中$ echo ${ips[0]}10.10.10.120.20.20.2# 获取全部 key$ echo ${!ips[@]}0# 注意加括号# 首先删除数组$ unset ips# 加括号方式创建$ ips+=(${ip1})$ ips+=(${ip2})$ declare -a | grep ipsdeclare -a ips='([0]="10.10.10.1" [1]="20.20.20.2")'$ echo ${!ips[@]}0 1$ echo ${ips[0]}10.10.10.1

来源地址:https://blog.csdn.net/qq_24433609/article/details/128133275

--结束END--

本文标题: 【shell脚本编写】shell 数组的使用

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

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

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

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

下载Word文档
猜你喜欢
  • 【shell脚本编写】shell 数组的使用
    数组 shell基础-04 数组(定义数组、查看数组、访问数组、删除数组、关联数组、二维数组) shell脚本之数组 打印数组_shell数组和字典 速查 操作命令作用创建数组declare ...
    99+
    2023-09-03
    php 开发语言 linux
  • linux如何编写shell脚本
    编写Linux的shell脚本可以使用任何文本编辑器,如vi、nano、gedit等。以下是编写shell脚本的一般步骤:1. 打开...
    99+
    2023-09-15
    linux shell
  • 如何编写Linux Shell脚本
    这篇文章主要为大家展示了“如何编写Linux Shell脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何编写Linux Shell脚本”这篇文章吧。代码风格规范开头有“蛇棒”所谓sheba...
    99+
    2023-06-16
  • Windows下如何使用PHP编写Shell脚本?
    在Windows操作系统下,使用PHP编写Shell脚本可以帮助我们自动化执行各种任务,从而提高效率。接下来,我们将介绍如何在Windows下使用PHP编写Shell脚本。 首先,我们需要安装PHP。可以在PHP官网下载Windows版本的...
    99+
    2023-07-01
    path windows shell
  • shell脚本编写之初级版
    1.  shell脚本的执行顺序是从上而下的,面向过程。2.  文件名称格式: xxx.sh3.  文件内容的第一行: #!/bin/bash4.  shell脚本就是将命令全部融合在一起5. &nb...
    99+
    2023-06-06
  • 如何编写Shell脚本注释
    本篇内容介绍了“如何编写Shell脚本注释”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、单选注释以“#”开头的行就是注释,会被解释器忽略...
    99+
    2023-06-09
  • centos中怎么编写shell脚本
    在CentOS中编写Shell脚本主要有以下几个步骤: 打开终端,创建一个新文件,例如script.sh,可以使用touch s...
    99+
    2023-10-23
    centos shell
  • linux中如何编写shell脚本
    在Linux中,可以使用任何文本编辑器编写Shell脚本。以下是编写Shell脚本的一般步骤: 打开终端并创建一个新的文本文件,...
    99+
    2023-10-23
    linux shell
  • 如何使用Go编写Apache的同步Shell脚本?
    Apache是目前最流行的Web服务器之一,因此很多人都使用它来托管自己的网站。但是,当我们有多台服务器时,如何同步网站文件和配置文件变得非常困难。传统的方法是使用Shell脚本,但是这种方法很容易出错,并且难以扩展。在本文中,我们将介绍...
    99+
    2023-10-20
    apache 同步 shell
  • Bash Shell脚本中数组的使用方法
    这篇文章主要介绍“Bash Shell脚本中数组的使用方法”,在日常操作中,相信很多人在Bash Shell脚本中数组的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Bash Shell脚本中数组的使...
    99+
    2023-06-17
  • Shell脚本中如何使用Java数组?
    在Shell脚本中使用Java数组是一个非常常见的需求。这是因为Java数组在存储大量数据时非常方便,而Shell脚本则常常需要处理大量数据。本文将介绍如何在Shell脚本中使用Java数组。 声明和初始化Java数组 在Java中声...
    99+
    2023-09-22
    数组 关键字 shell
  • Shell脚本编程入门编写教程
    这篇文章主要讲解了“Shell脚本编程入门编写教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell脚本编程入门编写教程”吧!例子一:绘制特殊图形代码如下:#!/bin/bash&nb...
    99+
    2023-06-09
  • shell脚本编写的步骤是什么
    编写shell脚本的步骤如下:1. 定义脚本的目的和功能:确定脚本要解决的问题或实现的功能。2. 编写脚本的头部:在脚本的第一行添加...
    99+
    2023-09-22
    shell
  • 用Python编写shell脚本时经常使用的函数有哪些
    用Python编写shell脚本时经常使用的函数有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在计算机语言的实际应用中用Python编写shell脚本这一...
    99+
    2023-06-17
  • Windows 系统下如何使用 Go 编写 Shell 脚本?
    Shell 脚本是一种在操作系统上运行的脚本语言,可以用于管理文件、程序和系统设置等。在 Linux 和 macOS 等 Unix 系统中,Shell 脚本是一种非常常见的工具。但是,在 Windows 系统中,Shell 脚本并不像在 ...
    99+
    2023-07-10
    windows shell path
  • 使用shell脚本怎么编写俄罗斯方块
    使用shell脚本怎么编写俄罗斯方块?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码:#!/bin/bash   # ...
    99+
    2023-06-09
  • linux怎么编写shell集群脚本
    编写一个Shell集群脚本可以实现以下步骤:1. 在主节点上创建一个Shell脚本文件,例如cluster.sh。2. 在clust...
    99+
    2023-09-22
    shell linux
  • shell脚本编程之数组的示例分析
    这篇文章将为大家详细讲解有关shell脚本编程之数组的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用...
    99+
    2023-06-09
  • shell脚本的编写规范是怎样的
    这篇文章主要介绍“shell脚本的编写规范是怎样的”,在日常操作中,相信很多人在shell脚本的编写规范是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”shell脚本的编写规范是怎样的”的疑惑有所帮助!...
    99+
    2023-06-09
  • Shell脚本中的数组用法总结
    这篇文章主要讲解了“Shell脚本中的数组用法总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell脚本中的数组用法总结”吧!1、怎么声明一个数组变量?直接赋值:代码如下:array[...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作