【Linux】shell数组
1.数组的概念
shell数组就是一个元素集合,它把有限个元素用一个名字来命名,然后用编号对他们分区。这个名字称为数组名,用于区分不同内容的编号称为数组的下标。
数组的设计其实就是为了处理方便,把具有相同类型的若干变量按有序的形势组织起来的一种形势,以减少重复频繁的单独定义。
2.数组的定义
# 语法:array=(value value1 value3 ...)# 实例:array=(1 2 3)
或者
# 语法:array=([key1]=value1 [key2]=value2 ...)# 实例:array=([3]='A' [9]='B' [6]='C')
再或者
arr1[0]=value
arr1[1]=value1
arr1[2]=value2
还可以使用动态命令定义数组
arr2=($(ls /))
3.数组的读取
注意:数组的元素下标是从0开始的
echo ${QINYS[0]} 引用第一个数组变量,结果打印test1;
echo ${QINYS[1]} 引用第二个数组变量;
echo ${QINYS[@]} 显示该数组所有参数;
echo ${#QINYS[@]} 显示该数组参数个数,也可以使用echo ${#QINYS[*]} ;
echo ${#QINYS[0]} 显示test1字符长度;
echo ${QINYS[@]:0} 打印数组所有的值;
echo ${QINYS[@]:1} 打印从第二个值开始的所有值;
echo ${QINYS[@]:0:2} 打印从第一个值与第二个值;
echo ${QINYS[@]:1:2} 打印从第二个值与第三个值。
4.数组的增删
4.1 增加或覆盖
“数组名[下标]”对数组进行引用赋值,如果存在,则覆盖,不存在则新增
例如:arr3[4]=5 表示数组arr3中没有第4个元素,则新增,有则覆盖元素
4.2 删除
使用命令unset删除
示例:unset arr3[0]
删除整个数组
示例:unset arr3
3、shell数组脚本案例
3.1.循环打印数组元素
#!/bin/bash
array=(1 2 3)
for((i=0;i<${#array[@]};i++))
do
echo ${array[i]}
done
输出结果:
2.通过普通for循环语句打印数组元素
#!/bin/bash
array=(1 2 3)
for i in ${array[@]}
do
echo $i
done
输出结果:
3.通过while循环打印数组
#!/bin/bash
array=(1 2 3)
i=0
while((i<${#array[@]}))
do
echo ${array[i]}
((i++))
done
输出结果与上述相同
4.竖向定义数组并批量打印
#!/bin/bash
arr_ip=(
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5) #循环打印数组
for((i=0;i<${#arr_ip[@]};i++))
do
echo "The num is $i,the ip is ${arr_ip[i]}"
done
echo "---------------------"
echo "ayy_ip length is :${#arr_ip[@]}"
输出结果:
4、现实案例
需求:利用bash打印出下面这句话中大于等于5个字母的单词
my favourite subject is English . and i like sports very much
方法一:
#!/bin/bash
arr=(my favourite subject is English . and i like sports very much)
for((i=0;i<${#arr[@]};i++))
do
if [ ${#arr[i]} -gt 5 ]
then
echo "${arr[i]}"
fi
done
echo '----------------------'
for word in ${arr[*]}
do
if [ `expr length $word` -gt 5 ];
then
echo $word
fi
done
输出结果:
方法2:使用awk打印
Linux:/qinys/data # chr="my favourite subject is English . and i like sports very much"
Linux:/qinys/data # echo $chr|awk '{for(i=0;i<=NF;i++) if(length($i)>5) print $i}'
my favourite subject is English . and i like sports very much
favourite
subject
English
sports
最新文章
- 纯jsp用户登录系统
- [deviceone开发]-课程表的例子
- Redhat5.8 环境下编译安装 Redis 并将其注册为系统服务
- MarkDown写作技巧
- javascript面向对象的理解(一)
- ios 多线程-GCD-NSOperation
- 基于iOS,Android的服务器证书失效检测
- C++关键字之const
- 菜单之一:Menu基础内容
- gridcontrol如何根据值来动态设置某一行的颜色
- servlet第3讲(中集)----同一用户的不同页面共享数据
- 多线程之Thread
- JS变量类型与计算
- spring boot(三) 集成mybatis
- postgresql-无序uuid tps测试
- python常用库 - NumPy 和 sklearn入门
- 【netcore基础】MVC API全局异常捕捉中间件ExceptionHandlerMiddleWare
- gpg签名用法
- JS实现音乐播放器
- C语言的经典排序算法源码