浅谈shell数组的定义及循环

浅谈shell数组的定义及循环

在Shell脚本中,数组是一个非常有用的概念,可以帮助我们更好地组织和管理数据。本文将介绍Shell数组的定义及循环操作。

定义一个数组

Shell支持两种类型的数组:普通数组和关联数组。普通数组只保存数值,而关联数组包含键值对。

定义一个普通数组,需要使用以下语法:

array_name=(value1 value2 value3 ... valueN)

其中array_name是数组的名称,value1valueN是数组中的元素。

例如:

fruit=(apple banana kiwi)

这种定义的方式将会创建一个包含三个元素的数组,数组名为fruit,元素分别为applebananakiwi

要定义一个关联数组,可以使用以下语法:

declare -A array_name

然后我们可以设置数组的键值对:

array_name[key1]=value1
array_name[key2]=value2
# ...
array_name[keyN]=valueN

例如:

declare -A pet
pet["name"]="Tom"
pet["type"]="cat"
pet["color"]="white"

这种定义的方式将会创建一个包含三个键值对的关联数组,数组名为pet,键为nametypecolor,对应的值分别为Tomcatwhite

访问数组元素

要访问数组中的元素,可以使用以下语法:

${array_name[index]}

例如:

echo ${fruit[0]}   # 输出apple
echo ${pet["name"]}  # 输出Tom

循环数组

我们可以使用循环语句来遍历数组中的元素,以下是示例循环的方式。

循环普通数组

使用for循环来遍历普通数组:

fruit=(apple banana kiwi)
for i in ${fruit[@]}; do
    echo $i
done

这个例子中,${fruit[@]}会展开为apple banana kiwi三个元素,然后我们使用for循环遍历每个元素并打印到屏幕上。

循环关联数组

使用for循环的方式遍历关联数组,需要使用key-value顺序的方式获取数组的值:

declare -A pet
pet["name"]="Tom"
pet["type"]="cat"
pet["color"]="white"

for key in ${!pet[@]}; do
    echo "key: $key, value: ${pet["$key"]}"
done

这个例子中,${!pet[@]}会展开为name type color三个键,然后我们使用for循环遍历每个键,通过${pet["$key"]}获取对应的值。

示例说明

示例1

定义一个普通数组nums,元素为10个随机数,然后遍历数组并输出:

#!/bin/bash
nums=($(shuf -i 1-100 -n 10))
for i in ${nums[@]}; do
    echo $i
done

这个脚本中,我们使用了shuf命令来生成10个随机数,保存在nums数组中,然后使用for循环来遍历每个元素。

示例输出:

92
13
83
61
53
18
17
41
97
23

示例2

定义一个关联数组prices,键为苹果、香蕉、饼干、水果,值分别为4、5、2、8,然后使用for循环输出所有元素。

#!/bin/bash
declare -A prices
prices["apple"]=4
prices["banana"]=5
prices["cookie"]=2
prices["watermelon"]=8

for key in ${!prices[@]}; do
    echo "product: $key, price: ${prices["$key"]}"
done

这个脚本中,我们使用declare命令定义了一个关联数组prices,然后使用for循环遍历每个键,并输出对应的值。

示例输出:

product: watermelon, price: 8
product: cookie, price: 2
product: apple, price: 4
product: banana, price: 5

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈shell数组的定义及循环 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • excel怎么制作报价表? 用 Excel 快速制作产品报价表的教程

    Excel制作报价表攻略 1. 准备数据 在制作报价表之前,首先需要准备好相关的数据。这些数据可以包括产品名称、价格、数量、折扣等信息。可以将这些数据整理在一个Excel工作表中,每一列代表一个数据字段,每一行代表一个产品。 以下是一个示例的数据表: 产品名称 价格 数量 折扣 产品A 100 10 0.9 产品B 200 5 0.8 2. 创建报价表 接下…

    other 2023年8月5日
    00
  • Android App中使用Glide加载图片的教程

    当今移动应用程序很少可以没有网络请求和图像加载。图像是一个通用的数据类型,作为应用程序重要的一部分,必须被优化以获得最好的用户体验。 Glide是一个基于Google Image Library(API)的Android开源图片加载库。它具有诸如模拟淡入淡出效果的高级功能。Glide处理图像,即使是大型的图像,也可以保持图像的清晰度和速度。 引入依赖 在项目…

    other 2023年6月25日
    00
  • 使用java8 API遍历过滤文件目录及子目录和隐藏文件示例详解

    使用Java 8 API遍历、过滤文件目录及子目录和隐藏文件示例详解 在Java 8中,引入了一些新的API,使得遍历、过滤文件目录及子目录和隐藏文件变得更加简单和方便。下面是一个完整的攻略,包含了两个示例说明。 示例1:遍历文件目录及子目录 首先,我们需要创建一个方法来遍历文件目录及其子目录。这可以通过使用Files.walk()方法来实现。下面是一个示例…

    other 2023年8月5日
    00
  • 抖音企业号可以用个人账号注册吗?抖音企业号认证详解

    抖音企业号可以用个人账号注册吗? 抖音企业号是抖音提供给企业用户的一项服务,企业用户可以通过抖音平台推广自己的品牌。那么,抖音企业号是否可以用个人账号注册呢?这个问题的答案是肯定的。 抖音企业号支持使用个人账号注册,即使是没有公司名称的个人也可以注册并使用。但需要注意的是,使用个人账号注册的企业号不具有独立法人资格,其权利和义务仍然由个人账号承担。 抖音企业…

    other 2023年6月27日
    00
  • cad怎么转换成pdf

    下面是将 CAD 转换为 PDF 的完整攻略。 步骤一:选择合适的 CAD 软件 首先,您需要有一款能够打开您的 CAD 文件并将其转换为 PDF 格式的 CAD 软件。常用的 CAD 软件包括 AutoCAD、SolidWorks、SketchUp、CADintosh 等。其中,AutoCAD 是功能最强大的 CAD 软件之一,但价格较为昂贵,如果您只需要…

    其他 2023年4月16日
    00
  • 深入讲解iOS开发中的UIViewController

    当我们开始学习iOS开发时,UIViewController是必须掌握的基本概念之一。UIViewController被称为MVC(Model-View-Controller)架构模式的视图控制器部分,负责管理视图的展示和行为。 下面是深入讲解UIViewController的完整攻略和两个示例说明。 什么是UIViewController? UIViewC…

    other 2023年6月27日
    00
  • 兼容iOS 10 升级xcode8出现的问题及一些适配问题的解决方案

    下面我将为你详细讲解“兼容iOS 10 升级xcode8出现的问题及一些适配问题的解决方案”的完整攻略。 问题描述 升级xcode8后,兼容iOS10的应用程序可能会出现一些问题,例如: 应用程序闪退:在iOS 10上运行的应用程序会闪退或引起其他崩溃问题。原因是xcode8中默认启用了App Transport Security(ATS),这可能影响到应用…

    other 2023年6月26日
    00
  • node命令行服务器(http-server)和跨域的实现

    下面是详细讲解“node命令行服务器(http-server)和跨域的实现”的完整攻略。 node命令行服务器(http-server)的实现 安装http-server 在命令行中输入以下命令即可安装http-server: npm install http-server -g 启动http-server 在终端中进入要启动的网站目录,输入以下命令来启动h…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部