for循环下标 shell_Shell数组操作 带下标遍历
1、数组定义
1.1 declare定义
使用declare -a 命令定义数组(数组的索引是从0开始计数的),接下来就可以通过[]操作符为不同索引位置的元素赋值。
declare -a names
names[0]=tom
names[1]=jack
注意:shell变量是弱类型的,比要求数组中元素类型相同
在定义数组的同时,可以同时赋值,用()表示,各元素之间用空格隔开
#定义的同时直接赋值
declare -a names=(tom jack)
#增加元素
names[2]=sue
1.2直接定义
创建数组最简单的方法是使用()直接定义数组,括号中元素用空格隔开;在括号中也可以声明下标。实例:
#使用()直接数组
days1=(one two three four five)
#或者在()中声明下标,默认从0开始
days2=([0]=’one’ [1]=’two’ [2]=’three’ [3]=’four’)
#下标可以不连续
days3=([0]=’one’ [2]=’three’)
1.3带下标定义
使用[]操作符,为每一个指定下标赋值,下标也可以不连续
header[0]=’user’
header[1]=’pid’
header[2]=’%CPU’
header[3]=’%MEM’
1.4从文件读取数组
days=(`cat days.txt`)
2、数组操作
2.1赋值
指定下标,使用[]操作符为元素赋值,当下标不存在时,相当于为数组增加元素
declare -a names
names[0]=tom
2.2取值
指定下标,使用[]操作符从数组中对应元素,然后使用$取值,格式:${数组名[索引]}
days=(one two three four five)
#取出第1个元素
echo ${days[0]}
#取出第3个元素
echo ${days[2]}
获得数组中所有值:${数组名[@]}、${数组名[*]}
${数组名[@]}得到是以空格隔开的元素,可以用在数组遍历中;${数组名[*]}得到的是一整个字符串。
注意:${数组名}并不会获得所有值,它只会获得到第一个元素的值。即${数组名}等价于${数组名[0]}
示例:
#!/bin/bash
#数组取值
days=(one two three four)
echo ${days}
echo ${days[0]}
echo ${days[1]}
echo ${days[@]}
echo ${days[*]}
echo "**********"
names=()
names[1]=tom
names[2]=jack
echo ${names}
echo ${names[1]}
echo ${names[@]}
结果:
2.3长度
利用”@”或“*”字符,将数组扩展成列表,然后使用”#”来获取数组元素的个数。
示例:
#!/bin/bash
#数组个数
days=(one two three four)
echo "数组days的元素个数为:${#days[@]}"
echo "**********"
names=()
names[1]=tom
names[2]=jack
echo "数组names的元素个数为:${#names[*]}"
结果:
注意:如果某个元素是字符串,可以通过制定索引的方式获得该元素的长度。
2.4遍历
存在以下三种方式:
(1)${数组名[@]}、${数组名[@]}均可以获得所有元素(不管是元素列表,还是一整个字符串),使用for循环遍历即可
(2)带数组下标的遍历,当需要使用到数组的下标时,可以使用${!数组名[@]}
(3)while循环:根据元素的个数遍历,但对于稀疏数组,可能会丢失数据
示例:
#!/bin/bash
#数组遍历
days=(one two three four)
#for循环遍历
for day in ${days[*]} #或${days[@]}
do
echo $day
done
echo "***************"
#fou循环带下标遍历
for i in ${!days[@]}
do
echo ${days[$i]}
done
echo "***************"
#while循环
names=() #数组names是一个稀疏数组
names[1]=tom
names[2]=jack
i=0
while [ $i -lt ${#names[*]} ]
do
echo ${names[$i]}
let i++
done
结果:
2.5删除
删除一个数组或数组中元素用unset命令。
unset 数组名[索引] #删除索引下的元素
unset 数组名 #删除整个数组
2.6连接
用()将多个数组连接在一起,()中各个数组用空格隔开。
days=(one two three four)
names=(tom jack)
days=(${days[@]} ${names[@]})
for循环下标 shell_Shell数组操作 带下标遍历相关推荐
- LeetCode简单题之寻找数组的中心下标
题目 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和. 如果中心下标位于数组最左端,那么左侧数之和视为 0 ...
- LEETCODE | PYTHON | 724 | 寻找数组的中心下标
LEETCODE | PYTHON | 724 | 寻找数组的中心下标 1. 题目 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等 ...
- python索引例子_Python实现带下标索引的遍历操作示例
本文实例讲述了Python实现带下标索引的遍历操作.分享给大家供大家参考,具体如下: 代码如下: #coding=utf-8 #python - 实现带下标索引的遍历. str = 'abcdefgh ...
- C语言数组带下标赋值
好记性不如烂笔头. c语言数组带下标赋值,初始化的时候数组元素的值不受顺序影响,在有些时候方便扩展一幕了然. int array[3] = { 1, 2, 3 }; /* 等同于 */ int arr ...
- 增加数组下标_数组以及ArrayList源码解析
点击上方"码之初"关注,···选择"设为星标" 与精品技术文章不期而遇 前言 前一篇我们对数据结构有了个整体的概念上的了解,没看过的小伙伴们可以看我的上篇文章: ...
- php中数组下标,PHP数组介绍_php
数组基础: php中,数组的下标可以整数,也可以是字符串 php中,数组的元素顺序不是由下标决定,而是由其"加入"的顺序决定 定义: $arr1 = array(元素1,元素2,. ...
- Java数组基础使用下标、遍历、存取与本质
Java数组 一.创建数组的格式 二.数组下标 三.存放数组元素 四.取出数组元素 五.二维数组等多维数组 \qquad 遍历二维数组 一.创建数组的格式: 数组所需要存储的数据类型[ ] 数组对象变 ...
- php 之循环、数组操作函数
php for循环数组 <?php$num = array(1,2,3,4,5,6,7,8,9,10);for($i = 0 ; $i < count($num) ; $i++){echo ...
- js 取得数组下标_数组的介绍及使用
JavaScript 中的数组常用于在单个变量中存储多个值.数组就是一组数据的集合,在内存中表现为一段连续的内存地址(保存在堆内存).创建数组的目的就是为了保存更多的数据. 数组概念和语法 概念:数组 ...
- 下标要求数组或指针类型_算法一看就懂之「 数组与链表 」
数据结构是我们软件开发中最基础的部分了,它体现着我们编程的内功.大多数人在正儿八经学习数据结构的时候估计是在大学计算机课上,而在实际项目开发中,反而感觉到用得不多. 其实也不是真的用得少,只不过我们在 ...
最新文章
- Spring 源码分析(四) ——MVC(一)Web 基础
- python常见错误-Python错误及异常总结汇总
- Gulp构建Angularjs应用
- java画图颜色_手绘板,多种颜色选择。我抄的《疯狂java讲义》的,包我乱导的,但代码能用。...
- Django引入静态文件
- matlab两个单引号是什么意思,两个单引号什么时候用
- 完美解决win10家庭版本系统无法远程连接问题
- 257套工业机器人SW设计3D图纸 焊接机械手/发那科ABB安川臂模型
- Trister Community DAOs最新型DAO架构
- 【win10系统重装】
- 免费赠送20个帆布包和2个咖啡杯活动规则必看(会搜索+复制粘贴就行)
- 【操作系统】CSAPP学习笔记
- ATUO CAD 如何延伸线段?
- 【项目】多部门数据对接
- 最长上升子序列(LIS)问题的解决及优化
- 高效持续交付的7大原则
- 2D骨骼动画工具Sprite Studio使用教程
- 详解编码器和解码器电路:定义,工作原理,应用,真值表
- 移动端字体大小单位rem
- 安卓 网络工具_安卓设备可用苹果Magsafe无线充电,但功率鸡肋,安卓并不需要...
热门文章
- enfuzion与lsf构建渲染集群_集群渲染系统构建及优化
- 4G模块 EC03-DNC的常用AT指令操作及模块访问内网方法
- docker打包镜像上传_docker制作自己的镜像并上传dockerhub
- UE4 通过蓝图实现蓝图接口
- VIRTIO-BLK设备SERIAL ID
- GBase 8a集群运行报错BLK_TEMP: return NULL in alloc
- 3D (Input) Sparse Convolution
- simpson公式matlab实现,数值分析复化梯形公式复化Simpson公式MATLAB程序
- 应届生求职面试真的有那么难吗
- 激荡20年的百度帝国,曾经的王者为何从BAT掉队?到底发生了什么?