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 ...
随机推荐
- php session和cookie知识
- Python decode和encody
s = "我今天非常的困" bs = s.encode("utf-8")# 把字符串转化成utf-8格式bytes # bytes 不是给人看的, 给机器用的 ...
- WEB接口测试之Jmeter接口测试自动化 (二)
通过逐个录入的方式,好不容易将需要测试几十个接口的300多个测试用例录入sampler-http请求中,固定的测试环境跑起来也还 感觉良好.不料在新服务器环境中跑用例时,问题来了:修改参数维护脚本等成 ...
- Docker入门讲解
1:容器重命名 [root@Docker ~]#docker run --name test_container -i -t centos /bin/bash[root@3ba67c6cf3f8 /] ...
- 关于XCode 的agvtool命令行
简介:用agvtool如何来自动更新版本号和bulid version agvtool是一个命令行工具,允许你自动递增到下一个最高的数量或具体的数字这些数字.本文档提供了更新您的构建和版本号码使用 ...
- Unity3D-常用小功能详解,例子(得分变动效果、倒计时)
Unity3D-Demo多个功能方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Score Ind ...
- bind() 函数兼容
为了搞清这个陌生又熟悉的bind,google一下,发现javascript1.8.5版本中原生实现了此方法,目前IE9+,ff4+,chrome7+支持此方法,opera和safari不支持(MDN ...
- java反射机制的作用与优点
java的反射机制就是增加程序的灵活性,避免将程序写死到代码里,例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码, ...
- 《DSP using MATLAB》Problem 4.10
今天擦完了玻璃,尽管有地方不那么明亮干净,冷风中瑟瑟发抖,年也快临近了. 代码是从网上找的, function [p, np, r, nr] = deconv_m(b, nb, a, na) % Mo ...
- 网络流--最大流ek模板
标准大白书式模板,代码简单但由于效率并不高,所以并不常用,就是这样 #include<stdio.h> #include<string.h> #include<queue ...