Shell脚本数组应用(查增改删)

news/2024/10/27 22:29:22/

记录:438

场景:Shell脚本数组应用,数组定义、数组查询、数组增加、数组修改、数组删除。

版本:CentOS Linux release 7.9.2009。

1.Shell脚本数组

(1)Shell脚本中使用小括号()来表示数组、元素之间使用空格分隔。赋值号“=”的两边不能有空格,即数组名“city_name”和赋值号“=”以及数组元素的“()”三者之间必须紧挨着不能有空格。

例如:city_name=(E1 E2 E3 ... En)

(2)Shell脚本中获取元素使用中括号[],在中括号[a]带下标指定元素位置,下标a是整数且从0开始,即arrry[0]表示第一个元素。

2.数组查询

2.1脚本

脚本名称:b2023060101.sh

脚本内容:

#!/bin/bashecho '1.定义数组'
cityArray=("宁波" "上海" "苏州" "杭州")echo '2.获取数组长度'
lenth=${#cityArray[@]}
echo "数组cityArray的长度: ${lenth}"
lenth=${#cityArray[*]}
echo "数组cityArray的长度: ${lenth}"echo '3.从数组中获取指定位置元素'
city01=${cityArray[0]}
city02=${cityArray[1]}
echo "数组cityArray的: city01=${city01}, city02=${city02}"echo '4.使用*或@输出所有元素'
city_all_01=${cityArray[*]}
city_all_02=${cityArray[@]}
echo "所有元素city_all_01: ${city_all_01}"
echo "所有元素city_all_02: ${city_all_02}"echo '5.使用for循环遍历数组'
for ((i=0; i<lenth; i++))
do echo "第$((i+1))个城市名称: ${cityArray[i]}"
doneecho '6.使用for in和@循环遍历数组'
for item in ${cityArray[@]}
do echo "城市名称: ${item}"
doneecho '7.使用for in和*循环遍历数组'
for item in ${cityArray[*]}
do echo "城市名称: ${item}"
doneecho '8.使用while循环遍历数组'
index=0
while ((index < lenth))
doecho "第$((index+1))个城市名称: ${cityArray[index]}"((index++))
done

2.2执行与输出

执行命令:bash b2023060101.sh

执行结果:

1.定义数组
2.获取数组长度
数组cityArray的长度: 4
数组cityArray的长度: 4
3.从数组中获取指定位置元素
数组cityArray的: city01=宁波, city02=上海
4.使用*或@输出所有元素
所有元素city_all_01: 宁波 上海 苏州 杭州
所有元素city_all_02: 宁波 上海 苏州 杭州
5.使用for循环遍历数组
第1个城市名称: 宁波
第2个城市名称: 上海
第3个城市名称: 苏州
第4个城市名称: 杭州
6.使用for in和@循环遍历数组
城市名称: 宁波
城市名称: 上海
城市名称: 苏州
城市名称: 杭州
7.使用for in和*循环遍历数组
城市名称: 宁波
城市名称: 上海
城市名称: 苏州
城市名称: 杭州
8.使用while循环遍历数组
第1个城市名称: 宁波
第2个城市名称: 上海
第3个城市名称: 苏州
第4个城市名称: 杭州

3.数组增加

3.1脚本

脚本名称:b2023060102.sh

脚本内容:

#!/bin/bashecho '1.定义数组'
cityArray=("宁波" "上海" "苏州" "杭州")echo '2.获取数组长度'
lenth=${#cityArray[@]}
echo "数组cityArray的长度: ${lenth}"echo '3.增加两个元素'
cityArray[4]="南京"
cityArray[5]="无锡"
lenth=${#cityArray[@]}
echo "增加后,数组cityArray的长度: ${lenth}"echo '4.使用*输出所有元素'
city_all_01=${cityArray[*]}
echo "所有元素city_all_01: ${city_all_01}"echo '5.合并两个数组'
cityArray01=("苏州" "无锡" "常州")
cityArray02=("杭州" "宁波" "绍兴")
cityArray03=(${cityArray01[*]} ${cityArray02[*]})
echo "输出数组cityArray01: ${cityArray01[@]}"
echo "输出数组cityArray02: ${cityArray02[*]}"
echo "输出合并后数组cityArray03: ${cityArray03[*]}"

3.2执行与输出

执行命令:bash b2023060102.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023060102.sh 
1.定义数组
2.获取数组长度
数组cityArray的长度: 4
3.增加两个元素
增加后,数组cityArray的长度: 6
4.使用*输出所有元素
所有元素city_all_01: 宁波 上海 苏州 杭州 南京 无锡
5.合并两个数组
输出数组cityArray01: 苏州 无锡 常州
输出数组cityArray02: 杭州 宁波 绍兴
输出合并后数组cityArray03: 苏州 无锡 常州 杭州 宁波 绍兴

4.数组修改

4.1脚本

脚本名称:b2023060103.sh

脚本内容:

#!/bin/bashecho '1.定义数组'
cityArray=("苏州" "无锡" "常州")echo '2.使用*输出所有元素'
echo "输出数组cityArray所有元素: ${cityArray[*]}"echo '3.修改数组元素后,使用*输出所有元素'
cityArray[1]="杭州"
cityArray[2]="上海"
echo "修改后,输出数组cityArray所有元素: ${cityArray[*]}"

4.2执行与输出

执行命令:bash b2023060103.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023060103.sh 
1.定义数组
2.使用*输出所有元素
输出数组cityArray所有元素: 苏州 无锡 常州
3.修改数组元素后,使用*输出所有元素
修改后,输出数组cityArray所有元素: 苏州 杭州 上海

5.数组删除

5.1脚本

脚本名称:b2023060104.sh

脚本内容:

#!/bin/bashecho '1.定义数组'
cityArray=("苏州" "无锡" "常州" "杭州" "上海")echo '2.使用*输出所有元素'
echo "输出数组cityArray所有元素: ${cityArray[*]}"echo '3.删除一个数组元素后,使用*输出所有元素'
unset cityArray[3]="杭州"
echo "执行删除操作后,输出数组cityArray所有元素: ${cityArray[*]}"echo '4.删除数组所有元素,使用*输出所有元素'
unset cityArray
lenth=${#cityArray[@]}
echo "执行删除操作后,数组cityArray的长度: ${lenth}"
echo "执行删除操作后,输出数组cityArray所有元素: ${cityArray[*]}"

5.2执行与输出

执行命令:bash b2023060104.sh

执行结果:

[root@hadoop211 tutorial]# bash b2023060104.sh 
1.定义数组
2.使用*输出所有元素
输出数组cityArray所有元素: 苏州 无锡 常州 杭州 上海
3.删除一个数组元素后,使用*输出所有元素
执行删除操作后,输出数组cityArray所有元素: 苏州 无锡 常州 上海
4.删除数组所有元素,使用*输出所有元素
执行删除操作后,数组cityArray的长度: 0
执行删除操作后,输出数组cityArray所有元素: 

以上,感谢。

2023年6月1日


http://www.ppmy.cn/news/154142.html

相关文章

SpringCloud GateWay 学习

SpringCloud GateWay 文章目录 SpringCloud GateWay1 Gateway 介绍2 代码实现 1 Gateway 介绍 有一个前后端分离项目&#xff0c;分析如图 使用网关服务Gateway&#xff0c;重构项目架构 Gateway 是在 Spring 生态系统之上构建的 API 网关服务&#xff0c;基于 Spring &#x…

首款国产全画幅8K50P广播级摄像机

近日&#xff0c;在2021中国网络媒体论坛央视总台展位上首次曝光博冠8K全新的广播级摄像机,其搭载了最新的35mm全画幅8K CMOS图像传感器,约4800万有效像素(8192 x 4320)支持H.265,10-bit格式拍摄的8K 50fps视频,,双原生ISO感光技术(ISO:640-2560),使视频拍摄时获取更宽的感光范…

aps和php撒意思?,aps-c画幅是什么意思

aps-c画幅是指数码相机的CCD(CMOS)的尺寸与APS的C型画幅大小相仿&#xff0c;在25mmX17mm左右&#xff1b;差不多是全画幅CCD(CMOS)面积的一半&#xff0c;也称半幅机。 本文演示环境&#xff1a;Windows7系统&#xff0c;Dell G3电脑 APS-C画幅意思&#xff1a;APS-C画幅指的就…

天津哪个相机行卖单反最好

天津金典相机行 &#xff0c;专业销售&#xff0c;收购&#xff0c;回收单反相机&#xff0c;为您提供优质的服务&#xff0c;我们同时在蜂鸟、佳友、色影无忌、淘宝、中国摄影网络等网站上均开设了网上商店,欢迎广大摄影爱好者在我们的网上商店交、购买、出售、租赁、交换喜爱…

国产博冠8K全画幅摄像机B1获ISLE创新奖

4月7日-9日&#xff0c;2023国际智慧显示及系统集成展&#xff08;ISLE&#xff09;与第11届中国电子信息博览会&#xff08;CITE&#xff09;在深同步盛大开启。BOSMA博冠8K作为国产8K摄像机先行者&#xff0c;受邀参与&#xff0c;并携2大产品系列及场景解决方案亮相&#xf…

摄影基础之【**相机画幅、人眼视角范围**】

摄影基础之【相机画幅、人眼视角范围】 [来源于网络] 1.画幅 画幅指单反相机CCD感光器面积的大小&#xff0c;由大至小分大画幅、中画幅、全画幅、APS-C画幅、APS画幅等。 详见http://www.360doc.com/content/13/0226/13/8146789_267994474.shtml 2.人眼视角范围 视角是指人…

美能达早期经典手动单反相机比较表

http://www3.xitek.com/papers/hahaa/hahaa1.htm 从1958年美能达展示了第一台单反相机SR-2起&#xff0c;美能达的商标就一直是创新和质量的同义词。产量极大的SRT系列更是以其结实耐用&#xff0c;功能完备&#xff0c;而吸引了大量新用户。而充满传奇色彩的“Rokkor” 镜头则…