shell 数组及其遍历的3种方法

shell 数组及其遍历的3种方法1 shell 数组 1 1 数组概述数组中可以存放多个值 BashShell 只支持一维数组 不支持多维数组 初始化时不需要定义数组大小 与 PHP 类似 与大部分编程语言类似 数组元素的下标由 0 开始 Shell 数组用括号来表示 元素用 空格 符号分割开 语法格式如下 array name value1value2 valuen 例如 my array AB C D 我们也可以使用下标来定义数组 array name 0 value0array na

1、shell数组

1.1、数组概述

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。

与大部分编程语言类似,数组元素的下标由0开始。

Shell 数组用括号来表示,元素用”空格”符号分割开,语法格式如下:

array_name=(value1 value2 … valuen)

例如:my_array=(A B “C” D)

我们也可以使用下标来定义数组:

1.2、数组中的主要方法

  • 读取数组 :读取数组元素值的一般格式是:${array_name[index]}
  • 获取数组中的所有元素:使用@ 或 * 可以获取数组中的所有元素,
  • 获取数组的长度:获取数组长度的方法与获取字符串长度的方法相同

2、shell 数组遍历的3种方法

  • 标准的for循环
  • for … in循环方法
  • While循环法

3、闲话不说,直接上代码

[work@master]$ cat test.sh #!/bin/bash cwd=$(cd $(dirname $0); pwd) function main() { echo "shell 数组介绍" echo "1.读取数组元素值的一般格式,例如:" my_array=(A B "C" D) echo "第一个元素为: ${my_array[0]}" echo "第二个元素为: ${my_array[1]}" echo "第三个元素为: ${my_array[2]}" echo "第四个元素为: ${my_array[3]}" echo "2.获取数组中的所有元素: 使用@ 或 * 可以获取数组中的所有元素,例如:" my_array=(A B "C" D) echo "数组的元素为: ${my_array[*]}" echo "数组的元素为: ${my_array[@]}" echo "3.获取数组的长度: 获取数组长度的方法与获取字符串长度的方法相同,例如:" my_array=(A B "C" D) echo "数组元素个数为: ${#my_array[*]}" echo "数组元素个数为: ${#my_array[@]}" echo "*" echo "shell 数组遍历的3种方法" echo "创建一个数组" array=( A B C D 1 2 3 4) echo "1.标准的for循环" for(( i=0;i<${#array[@]};i++)) do #${#array[@]}获取数组长度用于循环 echo ${array[i]}; done; echo "2.for … in" echo "2.1 遍历(不带数组下标)" for element in ${array[@]} #也可以写成for element in ${array[*]} do echo $element done echo "2.2 遍历(带数组下标)" for i in "${!array[@]}"; do printf "%s\t%s\n" "$i" "${array[$i]}" done echo "3.While循环法" i=0 while [ $i -lt ${#array[@]} ] #当变量(下标)小于数组长度时进入循环体 do echo ${array[$i]} #按下标打印数组元素 let i++ done echo "4.我的示例" pos=0 array=(    ) for element in ${array[@]} do end_date=$element start_date="${element: 0: 6}01" let pos++ echo "序号: echo ${pos}, start_date: ${start_date}, end_date: ${end_date}" done } main $@ 

4、执行和输出结果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222084.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:36
下一篇 2026年3月17日 下午4:36


相关推荐

  • 公司各个部门所有英文缩写怎么写_公司有哪几个部门

    公司各个部门所有英文缩写怎么写_公司有哪几个部门总公司:HeadOffice(HO)分公司:BranchOffice(BO)营业部:BusinessOffice(BO)人事部:PersonnelDepartment(PD)人力资源部:HumanResourcesDepartment(HR)总务部:GeneralAffairsDepartment(GAD)财务部:GeneralAcc

    2025年8月19日
    6
  • API数据采集_数据采集接口

    API数据采集_数据采集接口1API使用简介实例:使用音乐排行榜详情API如下:https://api.apiopen.top/musicRankingsDetails?type=id使用python代码获取数据、importjsonfromurllib.requestimporturlopendefgetInformation(id):response=urlopen(…

    2025年12月7日
    9
  • redis设置具体时间过期_java redis设置过期时间

    redis设置具体时间过期_java redis设置过期时间memcached一般都设置expire过期了自动删除,然后$arr=$mem->get($key);if(empty($arr)){$sql=”select….”;$arr=$pdo->fetch();$mem->set($key,$arr,10*60);}redis的PHPAPI只有一个setex设置过期时间,其他的list,zset都没看到,如果没有的话…

    2026年4月13日
    3
  • Python元编程

    1.概述Python元编程有两种方法,一是采用类似“装饰器”的工具对基本元素(例如函数、类、类型)内审和对其进行实时创建和修改,二是运用类型"元类"的方式对类实例的创建过程进行

    2021年12月18日
    59
  • C# ACCESS数据库操作类

    这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下!推荐:

    2021年12月27日
    42
  • 浏览器offsetWidth、clientWidth、scrollWith等总结

    浏览器offsetWidth、clientWidth、scrollWith等总结  对象尺寸会涉及width和height,我们以width为例,height则是一样的道理。  1、clientWidth:对象可见的宽度,不包括滚动条等边线,会随窗口的显示大小改变。  clientWidth = 元素width+padding  2、scrollWidth:实际内容的宽,不包括边线宽度,会随着对象中内容的多少改变。  无滚动时等于c…

    2022年7月22日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号