[root@localhost ~]# a=(A B C D)
[root@localhost ~]# unset a[2] # 删除索引为2的元素
[root@localhost ~]# echo ${a[@]} # 显示删除后的元素
A B D
【数组遍历】
脚本输出:
1) 可以使用标准的for循环,这种类C语言的方式来遍历数组中的元素
2) for 元素 in 元素集(数组) 这种类Python的方式来遍历数组
3)从代码可读性与执行速度来看,推荐使用第二种方式
【数组赋值】
1) 第一种是给已经存在的元素项重新赋值
2) 当然也可以给不存在的索引添加赋值,可以看下面的示例
【数组添加】
【数组切片】
1) 通用的格式${array[@]:起始位置:长度},中间以":"隔开,如果第二项省略的话,就取后面所有的项
2) 切片后返回的是字符串,可以通过 新数组=(${旧数组[@]:索引:长度})来索引,参见上面最后一个例子
3) 区别于Python之一:起始位置可以为负数,但必须以放在()中,长度不能为负数
4)区别于Python之二:第二项在Python里面是结束索引,在Shell则代表所取元素的长度
5) 区别于Python之三:Python可以通过 list[-1:-4:-2]来反向取数,在Shell则实现不了
【数组替换】
${array[@]/x/y} 最小匹配替换,每个元素只替换一次
${array[@]//x/y} 最大匹配替换,每个元素可替换多次
${array[@]/x/} 最小匹配删除,只删除一个符合规定的元素
${array[@]//x/} 最大匹配删除,可删除多个符合规定的元素
${array[@]/#x/y} 从左往右匹配替换,只替换每个元素最左边的字符
${array[@]/%x/y} 从右往左匹配替换,只替换每个元素最右边的字符
【数组删除】
# 每个元素,从左向右进行最短匹配
## 每个元素,从左向右进行最长匹配
% 每个元素,从右向左进行最短匹配
%% 每个元素,从右向左进行最长匹配
【数组应用】
示例一: 将ifconfig命令取到的本地IP: 127.0.0.1逐行显示出来
脚本输出:
示例二: 模拟堆栈的push,pop,shift,unshift操作
脚本输出:
示例三: 在1-10间,随机生成10个不重复的数,将其放置于数组中
脚本输出:
1) 生成[1,10]范围内不重复的随机整数,并保存到数组array中
2) seq 1 10 用于生成1~10的整数序列(包含边界值1和10)
3) awk中的rand()函数用于随机产生一个0到1之间的小数值(保留小数点后6位)
4)rand()只生成一次随机数,要使用srand()函数使随机数滚动生成
5) 括号里留空即默认采用当前时间作为随机计数器的种子,这样以秒为间隔,随机数就能滚动随机生成了
6) 由于以秒为间隔,所以如果快速连续运行两次脚本(1s内),你会发现生成的随机数还是一样的
示例四: 将字符串处理后转为为数组,再对其打印输出
脚本输出:
示例五: 用read -a参数,从标准输入中读取数组,再做操作
脚本输出:
示例六: 判断某个变量,是否在数组中,在输出YES,否输出NO
脚本输出:
示例七: 对数组中的元素进行排序
示例八: 将/etc/passwd文件中以:分隔的第一列,即用户名放置于一个数组中
示例九: 将1-8,每个数自乘后输出
脚本输出:
示例十: 借助数组来设置SHELLS的环境变量
示例十一: 设置IFS,读取文件内容示例
示例十二: 利用eval,模拟实现数组的功能
脚本输出:
示例十三: 利用数组来实现冒泡排序
思路:会重复地走访过要排序的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。越大的元素会经由交换慢慢“浮”到数列的顶端
脚本输出:
示例十四: 利用数组来求最大值
Shell中数据类型不多,比如说字符串,数字类型,数组。数组是其中比较重要的一种,其重要应用场景,可以求数组长度,元素长度,遍历其元素,元素切片,替换,删除等操作,使用非常方便。Shell中的数组不像JAVA/C,只能是一维数组,没有二维数组;数组元素大小无约束,也无需先定义数组的元素个数;但其索引则像JAVA/C/Python,从0开始,下面其常用的方式进行总结. 【数组声明】...
一.Shell数组
和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。
Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++、Java、C# 等类似,Shell 数组元素的下标也是从 0 开始计数。
获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大...
数组是Shell的一种特殊变量,是一组数据的集合,里面的每个数据被称为一个数组元素。
当前Bash仅支持一维索引数组和关联数组,Bash对数组的大小没有限制。
定义数组
索引数组
第一种方法
array1[0]=a
array1[1]=b
array1[2]=c
这会得到一个包含三个元素的数组array1
第二种方法
array2=(a b c)
元素之间以空格隔开
处理数组
直接获取元素的值及数组的信息
获取单个元素的值
echo ${array
一 shell数组操作模拟队列queue或者栈stack
http://www.tech-recipes.com/rx/911/queue-and-stack-using-array/
here is a series of operation on arra...
shell不限制数组的大小,理论上可以存放无限量的数据,shell数组元素的下标也是从0开始计数
获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;下标必须大于等于0
遗憾的是,常用的Bash shell只支持一维数组,不支持多维数组
2. 数组的定义
shell中,用小括号( )来表示数组,数组元素之间用空格来分隔
array1=(1 2 3 4 5)
echo ${
来看个例子吧
kdvmt@kdvmt:temp$ ls *.sh -al
-rwxr-xr-x 1 kdvmt kdvmt 72 2021-07-12 16:27 fileexist.sh
kdvmt@kdvmt:temp$ ls *.sh -al | awk -F ' ' '{print NF}'
kdvmt@kdvmt:temp$ ls *.sh -al | awk -F ' '
shell数组一、数组概述1.数组的概念2.数组的特点3.数组定义方法二、数组包括的数据类型1.数据类型2.获取数组长度3.获取数据列表4.读取某个下标赋值三、使用数组1.数组遍历2.数组切片3.数组替换4.数组删除5.数组追加元素6.函数返回数组四、排序算法1.冒泡排序2.直接选择排序3.反转排序
一、数组概述
1.数组的概念
是一种容器,可以同时存放多个数据值。
2.数组的特点
1.数组是一种引用数据类型。
2.数组当中的多个数据,类型 必须统一。
3.数组长度在程序运行期间不可改变。
3.数组定义方法