shell中的数组
来源:互联网 发布:类似余罪的网络剧 编辑:程序博客网 时间:2024/05/17 01:51
shell中的数组
shell作为一门语言那肯定是不能缺少数组了,下面记录了shell中数组的一些相关内容。
Bash 提供了一维数组变量。任何变量都可以作为一个数组;内建命令 declare 可以显式地定义数组。数组的大小没有上限,也没有限制在连续对成员引用和赋值时有什么要求。数组以整数为下标,从 0 开始。
1. 定义和初始化数组
下面的示例总结了如何定义一个数组和如何来初始化数组:
declare -a array #显示声明了数组arraydelcare -a array[10] #数组大小没有上限,所以定义时指定的大小会被忽略array[key]=value #array[0]=one,array[1]=twoarray=(value1 value2...) #value的形式都是[subscript]=string,下标和等号可以省略,示例如下。array=(value1 value2 value3) #array[0]=value1,array[1]=value2,array[2]=value3array=([0]=value1 [2]=value3 [3]=value[4])
从上面来看数组的定义也是非常灵活多变的,能够满足我们大部分的需求,跟其其它语言最大的区别就是shell中的数组大小没有上限,也可以理解为数组是动态的。
2. 数组的访问
数组的任何元素都可以用${array[subscript]}来引用,花括号是必须的,以避免和路径扩展冲突。
如果 subscript 是@或是*,它扩展为array的所有成员。这两种下标只有在双引号中才不同。在双引号中,${name[*]}扩展为一个词,由所有数组成员的值组成,用特殊变量IFS的第一个字符分隔数组成员;${array[@]}将array的每个成员扩展为一个词。 如果数组没有成员,${name[@]} 扩展为空串。
#!/bin/basharr=("one" "two")for i in "${arr[*]}"do echo ${i}done
上面的示例代码的输出结果如下:
lxg@lxg-X240:~/station/shell$ sh ./array.sh
one two
#!/bin/basharr=("one" "two")for i in "${arr[@]}"do echo ${i}done
上面的示例代码的输出结果如下:
lxg@lxg-X240:~/station/shell$ sh ./array.sh
one
two
3. 数组的删除
用unset来进行数组的删除,示例如下:
unset array[2] #删除第三个成员unset array #删除整个数组
4. 数组的长度
${#arr[@]}${#arr[*]}${#arr} #错误的。这个获取的是数组第一个成员的长度。
5. 数组的”切片”操作
获取数组的“子串“用${arr[@]:n:m}来表示,如果没有:m那么就获取从下标n开始到最后一个元素的“字串“,示例如下:
#!/bin/bashecho ${arr[@]:2}echo ${arr[@]:1:3}echo ${arr[@]:0}
输出如下:
three four
two three four
oner two three four
6. 关联数组
shell中还可以声明一个关联数组,普通数组只能使用整数作为数组的索引,而关联数组则使用字符串作为数组的索引。这个关联数组是不是有点其它语言中的字典的意思呢,o(∩∩)o…哈哈
#!/bin/bashdeclare -A ass_arrass_arr["apple"]=12ass_arr["orange"]=19for t in "${ass_arr[@]}"do echo ${t}doneecho "ass_arr[\"orange\"]="${ass_arr["orange"]}
上面的示例输出如下:
19
12
ass_arr[“orange”]=19
从上面的输出来看关联数组输出的顺序跟普通数组有一些不同,关联数组是从最后一个成员开始输出。
关联数组使用字符串作为索引,有时候我们需要获取数组的所有索引,可以用如下的方式来获取:
#!/bin/bashdeclare -A ass_arrass_arr["apple"]=12ass_arr["orange"]=19echo ${!ass_arr[@]} #or ${!ass_arr[*]}
输出如下:
apple orange
- shell中的数组
- shell中的数组使用方法
- Shell中的数组
- Shell中的数组
- shell中的数组
- Shell中的数组
- shell中的数组使用方法
- shell脚本中的数组
- SHELL 中的数组
- shell中的数组操作
- shell中的数组
- Shell中的数组
- shell中的关联数组
- Shell编程二:Shell中的数组
- shell 中的数组的应用
- [转]shell中的数组使用方法
- Shell 中的数组和循环
- shell 中的数组基本用法
- eclipse中xml文件更新后保存未响应解决方案
- Oracle 管理中需要用到的命令
- 平衡二叉树
- 欢迎使用CSDN-markdown编辑器
- 栈的应用
- shell中的数组
- 九度OJ 1026:又一版 A+B (进制转换)
- 设置DrawableTop的图片的大小
- Linux下无线网卡无法开启解决办法
- 三、配置maven
- Rational Bézier Curves: Conic Sections
- 双线程读写无锁队列
- mysql Access denied for user ''@'localhost' to database
- java學習筆記一