shell 3数组
shell支持一维数组(不支持多维数组),并且没有限定数组的大小。
1. 定义数组
shell中,用括号来表示数组,数组元素用空格分隔,下标从0开始
方式1:
数组名=(值1 值2...值n),如array_name=(value0 value1 value2)
方式2:
array_name=(value0
value1
value2
)
方式3 :单独定义数组的值
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
## 2.读取数组
* 获取数组某个元素的值${数组名[下标]} 如${arrayName[0]}
* 使用@可以获取数组中的所有元素${数组名[@]},如${arrayName[@]}
```#shell
array=(1 3 4 6)
#打印第一个元素
echo ${array[0]} #1
#打印全部元素
echo ${array[@]} #1 3 4 6
echo ${array[*]} #1 3 4 6
```
3. 获取数组的长度
- 获取数组长度的方法和获取字符串长度的方法相同:length=\({#数组名[@]}或length=\){#数组名[*]}
- 获取数组某元素的长度:length=${#数组名[下标]}
#!/bin/sh
list1=("east" "west" "north" "south")
list2=('one'
'two'
'three'
'four'
)
list3[0]="陆风"
list3[1]="江铃"
list3[3]="长安"
#打印list1的所有元素
echo "list1元素: "${list1[@]} #list1元素: east west north south
#打印list2的长度
echo "list2长度:"${#list1[@]} #list2长度:4
#打印list3的第一个元素及其长度
echo "list3第1个元素: "${list3[0]} ${#list3[0]} #list3第1个元素: 陆风 2
#打印数组不存在的元素
echo "list3第3个元素: "${list3[2]} ${#list3[2]} #list3第3个元素: 0
4. shell数组中*和@的区别
\*加上双引号,会被当成一串字符串处理@加上双引号,依然被当作数组处理
```#shell
#!/bin/sh
list_a=(1 2 'a' b)
echo "--{array[@]}--"
for i in ${list_a[@]};do
echo $i
done
echo "--{array[*]}--"
for i in ${list_a[*]};do
echo $i
done
echo "--\"{array[@]}\"--"
for i in "${list_a[@]}";do
echo $i
done
echo "--\"{array[*]}\"--"
for i in "${list_a[*]}";do
echo $i
done
```
结果:
```#xml
--{array[@]}--
1
2
a
b
--{array[*]}--
1
2
a
b
--"{array[@]}"--
1
2
a
b
--"{array[*]}"--
1 2 a b
```
## 5.变量在数组中的使用
数组里添加变量,必须要加$,否则添加的是一个字符串使用变量作为下标去获取value,变量加不加$都可以
```#shell
#!/bin/sh
strA="Tom Cat"
a=5
#传入不存在的变量,数组不会增加
#传入带空格的变量,会将变量按空格分拆添加到数组中
list_a=(1 2 'a' b $c $strA StrDarle)
echo ${#list_a[@]}
#获取第6个和第7个元素
echo "第6个元素:"${list_a[$a]} "第7个元素" ${list_a[a+1]}
for i in `seq 1 ${#list_a[@]}`;do
echo "第${i}个元素:"${list_a[i-1]}
done
```
结果
```#log
7
第6个元素:Cat 第7个元素 StrDarle
第1个元素:1
第2个元素:2
第3个元素:a
第4个元素:b
第5个元素:Tom
第6个元素:Cat
第7个元素:StrDarle
```
shell 3数组的更多相关文章
- 每天一个shell知识--数组
1.shell中数组的定义: 数组名=(value value1 value2 ) 也可以单独的设定数组的分量: arrayL[0]=value arrayL[1]=value1 2.${arrayL ...
- Linux shell之数组
引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...
- linux shell 中数组使用方法介绍
linux shell在编程方面比windows 批处理强大太多,不管是在循环.运算.已经数据类型方面都是不能比較的. 以下是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...
- shell脚本-数组
shell脚本-数组 数组 变量:存储单个元素的内存空间. 数组:存储多个元素的连续的内存空间,相当于多个变量的集合. 数组索引:编号从0开始,属于数值索引.索引可支持使用自定义的格式,而不仅是数值格 ...
- Shell 编程 数组
本篇主要写一些shell脚本数组的使用. 数组定义 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名 ...
- 我们一起来学Shell - shell的数组
文章目录 什么是数组 数组中常用变量 数组的定义 小括号定义数组变量 小括号加键值对定义数组变量 分别定义数组变量 动态地定义数组变量 数组赋值的切片 遍历数组 关联数组 我们一起来学Shell - ...
- Shell 之数组 [转]
本文也即<Learning the bash Shell>3rd Edition的第六章Command-Line Options and Typed varilables之读书笔记之三,但 ...
- shell之数组
1.从数组的下标分为索引数组.关联数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5, ...
- shell中数组讲解
定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开.定义数组的一般形式为: 代码如下: 数组名=(值1 值2 ... 值n) 例如: 代码如下: array_ ...
- [ SHELL编程 ] 数组、关联数组和awk数组
本文主要对shell编程中常用的数组.关联数组和awk数组定义.操作以及注意事项做个总结,并提供具体案例. 数组 数组定义:一对圆括号表示数组,数组元素之间用空格符号分割. Array=(val1 v ...
随机推荐
- 1.2 C++命名空间(namespace)
参考:http://www.weixueyuan.net/view/6326.html 总结: C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespac ...
- Eclipse js报错问题解决办法
最近在Eclipse中导入新项目后会发现js报错,但是不影响程序的运行,但是对于程序员的我们来说多少还是比较在意代码前面的红色的X的,有木有??? 上网也查了很多方法,对于其中一种方法表示不能完全解决 ...
- IDC:2014年的十大 IT 趋势
IDC:2014年的十大 IT 趋势 市场研究公司 IDC 近日发布报告,对 2014 年的十大科技行业发展趋势作出了预测.IDC 称,2014 年将是科技业"鏖战正酣"的一年,整 ...
- 使用Ant搭建Android开发环境入门
使用Ant搭建Android开发环境入门 使用Ant搭建Android开发环境,建立android项目 配置Ant环境 下载Ant:http://ant.apache.org/bindownloa ...
- vector类转换Mat类
前言 一个个数据push back到vector之后,可以使用Mat()函数将vector类型转换为Mat类型. 在opencv中Mat类的构造函数中有一个构造函数可以直接把vector类转换为Mat ...
- win10系统如何进入BIOS模式
前言 安装双系统时,一般需要设置一些BOOT的选项值,比如security boot的选项.以前都是重启之后按F2或者F12等进入BIOS模式的, 但是博主按照这种方式没有正确进入,本文就针对这一问题 ...
- 牛客多校第五场 J:Plan
链接:https://www.nowcoder.com/acm/contest/143/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- SUST OJ 1675: Fehead的项目(单调栈)
1675: Fehead的项目 时间限制: 1 Sec 内存限制: 128 MB提交: 41 解决: 27[提交][状态][讨论版] 题目描述 Fehead俱乐部接手了一个项目,为了统计数据,他们 ...
- pycharm的安装和激活
这里可以自定意义安装路径 32-bit是创建32位桌面快捷方式(64-bit同理) .py勾选是默认关联py文件,勾选上后所有py文件默认用pycharm打开 Download....勾选是下载安装X ...
- Java Web HelloWorld!
距离上次做Java Web开发已经两年多了,我几乎忘得一干二净……都忘记咋搭建环境了……,然后Eclipse官网莫名其妙的挂掉.幸好电脑里还有份两年前的开发环境备份…… 重拾Java Web开发啊,说 ...