范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

shell编程数组操作详细讲解,理论实战,零基础也能轻松学会

  7.1 数组介绍
  变量:存储单个元素的内存空间
  数组:存储多个元素的连续的内存空间,相当于多个变量的集合
  数组名和索引 索引的编号从0开始,属于数值索引 索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持 bash的数组支持稀疏格式(索引不连续) 7.2 声明数组#普通数组可以不事先声明,直接使用 declare -a ARRAY_NAME #关联数组必须先声明,再使用 declare -A ARRAY_NAME
  注意:两者不可相互转换 7.3 数组赋值
  数组元素的赋值
  (1) 一次只赋值一个元素 ARRAY_NAME[INDEX]=VALUE
  范例: weekdays[0]="Sunday" weekdays[4]="Thursday"
  (2) 一次赋值全部元素 ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
  范例: title=("ceo" "coo" "cto") num=({0..10}) alpha=({a..g}) file=( *.sh )
  (3) 只赋值特定元素 ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...)
  (4) 交互式数组值对赋值 read -a ARRAY
  范例: [root@centos8 ~]#declare -A course [root@centos8 ~]#declare -a course -bash: declare: course: cannot convert associative to indexed array [root@centos8 ~]#file=( *.sh ) [root@centos8 ~]#declare -A file -bash: declare: file: cannot convert indexed to associative array7.4 显示所有数组
  显示所有数组: declare -a
  范例: [root@centos8 ~]#declare -a declare -a BASH_ARGC=() declare -a BASH_ARGV=() declare -a BASH_COMPLETION_VERSINFO=([0]="2" [1]="7") declare -a BASH_LINENO=() declare -ar BASH_REMATCH=() declare -a BASH_SOURCE=() declare -ar BASH_VERSINFO=([0]="4" [1]="4" [2]="19" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu") declare -a DIRSTACK=() declare -a FUNCNAME declare -a GROUPS=() declare -a PIPESTATUS=([0]="0")7.5 引用数组
  引用数组元素 ${ARRAY_NAME[INDEX]} #如果省略[INDEX]表示引用下标为0的元素
  范例: [root@centos8 ~]#declare -a title=([0]="ceo" [1]="coo" [2]="cto") [root@centos8 ~]#echo ${title[1]} coo [root@centos8 ~]#echo ${title} ceo [root@centos8 ~]#echo ${title[2]} cto [root@centos8 ~]#echo ${title[3]}
  引用数组所有元素 ${ARRAY_NAME[*]} ${ARRAY_NAME[@]}
  范例: [root@centos8 ~]#echo ${title[@]} ceo coo cto [root@centos8 ~]#echo ${title[*]} ceo coo cto
  数组的长度,即数组中元素的个数 ${#ARRAY_NAME[*]} ${#ARRAY_NAME[@]}
  范例: [root@centos8 ~]#echo ${#title[*]} 37.6 删除数组
  删除数组中的某元素,会导致稀疏格式 unset ARRAY[INDEX][root@centos8 ~]#echo ${title[*]} ceo coo cto [root@centos8 ~]#unset title[1] [root@centos8 ~]#echo ${title[*]} ceo cto
  删除整个数组 unset ARRAY
  范例: [root@centos8 ~]#unset title [root@centos8 ~]#echo ${title[*]} [root@centos8 ~]#7.7 数组数据处理
  数组切片: ${ARRAY[@]:offset:number} offset #要跳过的元素个数 number #要取出的元素个数 #取偏移量之后的所有元素  {ARRAY[@]:offset}
  范例: [root@centos8 ~]#num=({0..10}) [root@centos8 ~]#echo ${num[*]:2:3} 2 3 4 [root@centos8 ~]#echo ${num[*]:6} 6 7 8 9 10
  向数组中追加元素: ARRAY[${#ARRAY[*]}]=value ARRAY[${#ARRAY[@]}]=value
  范例: [root@centos8 ~]#num[${#num[@]}]=11 [root@centos8 ~]#echo ${#num[@]} 12 [root@centos8 ~]#echo ${num[@]} 0 1 2 3 4 5 6 7 8 9 10 117.8 关联数组declare -A ARRAY_NAME  ARRAY_NAME=([idx_name1]="val1" [idx_name2]="val2‘...)
  注意:关联数组必须先声明再调用
  范例: [root@centos8 ~]#name[ceo]=mage [root@centos8 ~]#name[cto]=wang [root@centos8 ~]#name[coo]=zhang [root@centos8 ~]#echo ${name[ceo]} zhang [root@centos8 ~]#echo ${name[cto]} zhang [root@centos8 ~]#echo ${name[coo]} zhang [root@centos8 ~]#echo ${name} zhang [root@centos8 ~]#declare -A name -bash: declare: name: cannot convert indexed to associative array [root@centos8 ~]#unset name [root@centos8 ~]#declare -A name [root@centos8 ~]#name[ceo]=mage [root@centos8 ~]#name[cto]=wang [root@centos8 ~]#name[coo]=zhang [root@centos8 ~]#echo ${name[coo]} zhang [root@centos8 ~]#echo ${name[ceo]} mage [root@centos8 ~]#echo ${name[cto]} wang [root@centos8 ~]#echo ${name[*]} mage wang zhang7.9 范例
  范例:生成10个随机数保存于数组中,并找出其最大值和最小值 #!/bin/bash declare -i min max declare -a nums for ((i=0;i<10;i++));do  nums[$i]=$RANDOM  [ $i -eq 0 ] && min=${nums[0]} &&  max=${nums[0]}&& continue  [ ${nums[$i]} -gt $max ] && max=${nums[$i]}  [ ${nums[$i]} -lt $min ] && min=${nums[$i]} done echo "All numbers are ${nums[*]}" echo Max is $max echo Min is $min
  范例:编写脚本,定义一个数组,数组中的元素对应的值是/var/log目录下所有以.log结尾的文件;统计出其下标为偶数的文件中的行数之和 #!/bin/bash # declare -a files files=(/var/log/*.log) declare -i lines=0 for i in $(seq 0 $[${#files[*]}-1]); do     if [ $[$i%2] -eq 0 ];then  let lines+=$(wc -l ${files[$i]} | cut -d" " -f1)     fi done echo "Lines: $lines"练习
  1. 输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
  2. 将下图所示,实现转置矩阵 matrix.sh
  1 2 3 1 4 7
  4 5 6 ===> 2 5 8
  7 8 9 3 6 9
  3. 打印杨辉三角形
  本文为《企业级shell脚本编程实战》系列教程第七部分,作者为Linux段子手王晓春老师 ,上一篇见文末扩展链接,后续会分享更多shell脚本编程知识,感兴趣的朋友可以关注下!
  【电子版领取见下图!!】

10年后再穿正装,我选了这些来拍孕妇照粗略一算,距离上次穿正装应该有10年了,当时忙着各种公考的面试,虽然从国考省考到市事业单位全都以笔试第一面试第二的成绩遗憾的没有成功,最后考上了老师也算是没白买那些正装。真正进入学夏天和啤酒烤串更配!细数我喝过的那些啤酒大家好,我是手撕鲈鱼,一个只会吃不会做的不合格吃货。我们这基本上过了五一以后就开始有夏天的感觉了,各种烧烤也如雨后春笋般冒出来,有烤串怎么能没啤酒呢,这才是夏天该有的样子吗。吃的方国风潮玩游戏本,七彩虹将星X15大家好,我是爱数码,爱音乐,更爱动作电影的网管手撕鲈鱼。最近我有幸被选中参与了七彩虹官方组织的三星X15游戏笔记本的评测活动,这里就和大家一起分享一下使用感受。一外观笔记本的A面是翻车?不存在的!效果惊艳,好用不脏手的蓝宝洗地机年前本是家家必备的大扫除阶段,每年这活我都是主力,所以总想着给自己省点功夫,多整点好用的工具。扫地机器人和无线吸尘器也都用过,但它们都有个共同的痛点,那就是没法对付湿垃圾!但无论是企业如何为混合云解决方案选择云计算提供商当企业计划在公有云中运行工作负载时,需要选择合适的云计算提供商必须比较不同云计算提供商提供的各种功能和定价,以确定是否最适合其工作负载。但是,如果采用了混合云解决方案,那么选择公有首度亮相服贸会,亚马逊云科技如何演绎大象起舞?在数字化逐步加快的商业进程上,云计算正在成为推动数字化转型的关键要素。作为全球领先的云计算厂商,亚马逊云科技也在数字经济和数字贸易等方面不断强化云服务,创新技术应用,赋能产业发展。入局汽车新战争,亚马逊云科技三驾马车能否拉升其中国地位?9月14日,亚马逊云科技中国线上峰会落下帷幕,除了植根本地的中国战略外,亚马逊云科技宣布了多个举措,包括发起汽车行业创新加速计划,成立AI赋能未来构建者联盟,以及启动AI在未来公益百年音响品牌的首款真无线蓝牙耳机怎么样?天龙AHC630W初体验作为烧友爱好者,音箱和耳机产品对我来说,算是生活必需品的存在。日前,在烧友群内有朋友分享刚上市不久的天龙真无线蓝牙耳机,看到耳机的那一刻,有点心动,查了下售价,性价比也不错,就赶紧中星微推出AI机器视觉芯片和智能视频安全云解决方案以科技创新和开放合作为主题的2021中关村论坛在京隆重召开,中星微应邀出席了这次科技盛会,并发布了新一代人工智能机器视觉芯片星光摩尔一号和国内首个智能视频安全云解决方案。这些丰硕的嘉御资本与谷歌启动业务合作计划9月27日消息,嘉御资本与谷歌启动了业务合作计划,嘉御资本成为谷歌该计划在中国正式合作的投资机构。该计划旨在对接DTC行业资源,分享专业观点和服务,探讨行业的变化机遇与调整,共同促一把浓茶,利奥博德FC750RPD深海蓝白轴手感实测数据报告有深邃稳重配色的LEOPOLD深海蓝版本,上期的陌生又熟悉樱桃白轴,LEOPOLDFC750RPD深海蓝到站秀感受到了它良好的做工和包装。它的白轴版本手感的很特别,具体的由我们观纬
华为否认将彻底出售手机业务,此事还有后续吗?最近华为要剥离手机业务的消息传的是沸沸扬扬,网上各种小道消息,各种爆料此起彼伏。华为总算是给出了回应传言都是假的,华为还要继续打造高端手机,继续为手机用户提供卓越的产品体验和服务。魅族18发布,起售价4399元,网友定价太高,超出溢价水准第一观察(文李楠)魅族在3月3日,刚刚发布最新的旗舰机魅族18和魅族18pro两款手机,该手机主要配置搭载行业主流的骁龙888处理器和LPDDR5和UFS3。1,主摄采用5000万浅谈DesignCompilerVerilog语言结构到门级的映射昨天的文章中,我们了解到DesignCompiler(DC)作为Synopsys公司开发的一款用于电路综合的EDA工具,在全球数字电路市场去得了巨大的成功,它的设计初衷是将用Ver行业思考Boss直聘上市带给集成侠的思考(点击上方头像关注集成侠)你用过Boss直聘吗?这个中国目前最大的在线招聘平台,在6月11日正式登录纳斯达克。此次发行价19美元,IPO募资规模为9。12亿美元,按此计算市值为88新消费时代,月饼自动化生产环节的升级选择(点击上方头像关注集成侠)小饼如嚼月,中有酥与饴。这是宋代大诗人苏东坡在一千年前中秋时节品尝月饼(别名小饼)后,由衷赞美而留下的诗句。据史料记载,月饼的起源最早可追溯到距今三千多年双十一必看新机推荐全能型选手vivoT1来袭vivo今年推出了很多让我们印象深刻的新机,比如vivoX70,凭借炸裂的拍照性能获得了业界的一致好评,也成为名副其实的街机,充分证明vivo在技术和研发上的实力。但是X70毕竟属抖音支付来了!补位拼多多谋战春晚支付大战一触即发新晋互联网巨头字节跳动也按捺不住进军金融业务的野心,布局互联网金融的核心环节支付。1月19日,抖音支付已在抖音APP内正式上线,在抖音APP内购物结算时,除了可选支付宝和微信支付外1999元起开关机无广告,荣耀智慧屏X2系列真香预警双11各大厂家都带来了自己的优惠价,想要入手智能电视机的朋友千万不能错过。这些电视产品中,荣耀智慧屏X2系列综合实力非常不错,目前也已经开启了优惠活动,现在参加预售,10月31日首你不是一个人在开车,还有千万个细菌陪着你夏日炎炎,桑拿天,出门都恨不得随身带个冰箱,而户外活动最需要爱车有个给力的空调,时刻给自己一个18摄氏度的凉爽拥抱。在这个需要靠车内空调续命的关键时期,空调能够一时开一时爽,一直开微信封杀拼多多小红书,连QQ系亲兄弟也不放过1月12日,微信安全中心发布公告称,微信已对QQ音乐QQ浏览器知乎好看视频小红书多多直播(拼多多旗下直播产品)等多个产品的违规外部链接进行限制,不再提供微信内直接打开的服务。这一消千元真香机iQOOZ5x即将发布最近很多手机厂商都发布了自己的新旗舰,价格也动辄45千,相对比较高。对于预算在千元左右的小伙伴们,最近可以好好关注一下iQOO即将发布的这款新机IQOOZ5x,不仅价格便宜,最重要