shell的数组

news2024/11/30 20:36:24

数组定义方法

方法一:数组名=( value0 value1 value2 ...)

 

方法二:数组名=([0]=value [1]=value [2]=value...)

 

方法三:列表名="value0 value1 value2 ..."

              数组名=($列表名)

 

方法四:数组名[0]="value"

              数组名[1]="value"

              数组名[2]="value"

              数组名[3]="value"

              ...

方法五:脚本定义创建数组

#!/bin/bash
a=0
for i in 10 20 30 40 50
do
     pp[$a]=$i
     let a++


done
echo ${pp[@]}

 删除数组

unset 数组名[下标]                   #删除某个值

unset 数组名                           #删除整个数组

数组包括的数据类型

  • 数值类型
  • 字符类型

使用“”或‘’定义

输出数组方式:echo ${数组名[@]}或者 echo ${数组名[*]}

 

通过脚本方式获取数组的值,并判断数组值是否完整

 

 

数组切片

 数组替换

 数组追加元素

方法一:数组名[新下标]=新元素

方法二:数组名[${数组名[@]}]=新元素       ps:此方法必须数组完整

方法三:新数组名=(“${数组名[@]}” “新元素” “新元素”)

双引号不能省略,否则,当数组中存在包含空格的元素时会按空格将元素拆分成多个;

不能将“@”替换为 '*',如果替换,不加双引号时与“@”的表现一致。加双引号时,会将数组中的所有元素作为一个元素添加到数组中

方法四:数组名+=(元素1 元素2 元素3 ...)

 

 

 

 向函数传入数组的值

函数名(){

newarr=($@)  #函数内通过$@能获取到调用函数时后面跟的所有参数,加上()可以在函数内组成新的数组

........

echo ${new函数[@]}

}

arr=($(函数名 ${arr[@]}))   #调用函数后面跟的参数为数组的元素列表表达式

 

 从函数内返回数组

#!/bin/bash

test () {
nerpp=($@)     函数内的数组nerpp的值为数组pp的值
for ((i=0;i<${#nerpp[@]};i++))   i的取值范围
do
nerpp[$i]=$[2 * ${nerpp[$i]}]    新的数组的各个值=原先值*2
done
echo ${nerpp[@]}             输出数组名nerpp的所有值
}
pp=(10 20 30 40 50)
echo "函数外数组值为:${pp[@]}"
#test ${pp[@]}
test1=($(test ${pp[@]}))          新的数组名=(函数test输出的数组nerpp的值)
echo "新的数组值为:${test1[@]}"    新的数组值

 数组排序算法

冒泡排序:类似气泡上涌的动作,会将数据在数组中从小到大或者从大到小不断的向前移动

基本思想:对比相邻的两个元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部

算法思路:冒泡算法由双层循环实现,其中外部循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次循环只剩下一下数组元素,不需要对比同时数组已经完成排序了。而内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数排序轮数而减少

 

#!/bin/bash
arr=(63 4 20 1 3 15)
echo "旧数组的值为:"${arr[@]}
#获取数组的长度
length=${#arr[@]}

#外循环定义比较轮数,比较轮数为数组长度减1,且从1开始
for ((a=1;a<length;a++))
do
#内层循环用来确定比较元素的位置,比较相邻两个元素,较大的元素往后移,并且比较次数会随着比较轮数的增加而减少
     for ((b=0;b<length-a;b++))
     do
        #读取相邻两个元素的前面元素的值
        first=${arr[$b]}
        #读取相邻两个元素的后面元素的值
        c=$[b+1]
        second=${arr[$c]}
        #相比较两个相邻元素的值大小,如果前面元素值大,则与后面元素交换位置
        if [ $first -gt $second ];then
           #使用4临时变量保存前面元素的值,实现两个相邻元素交换位置
           tmp=$first
           arr[$b]=$second
           arr[$c]=$tmp
       fi
      done
done

echo "冒泡排序后的数组的值为:"${arr[@]}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【WLAN从入门到精通-基础篇】

WLAN定义和基本架构 本文参考https://forum.huawei.com/enterprise/zh/thread/580888898454831104 1. WLAN定义 WLAN的全称是Wireless Local Area Network&#xff0c;中文含义是无线局域网&#xff0c;WLAN的定义有广义和狭义两种&#xff1a;广义上讲WLAN是以各种无线电波…

使用Kotlin函数式编程技术构建强大的 Android 应用程序

使用Kotlin函数式编程技术构建强大的 Android 应用程序 Kotlin 是一种现代的多用途编程语言&#xff0c;在 Android 应用程序开发人员中迅速流行起来。Kotlin 有别于其他编程语言的关键特性之一是它对函数式编程的强大支持。Kotlin 函数式编程允许开发人员编写更清晰、更简洁、…

本地生活服务:老将、新秀同台竞技

配图来自Canva可画 本地生活服务领域又热闹起来了。 事实上&#xff0c;本地生活服务一直为各路玩家所看好。最近几年&#xff0c;互联网大厂频频布局本地生活服务领域&#xff0c;其中抖音、快手等短视频平台更是持续加大在本地生活服务领域的布局力度。 前不久&#xff0c…

Grafana系列-统一展示-10-Explore Jaeger

系列文章 Grafana 系列文章 Explore Jaeger 你可以通过Explore查询和显示 Jaeger 的 trace。有 3 种方法: Query by searchQuery by trace IDUpload a JSON trace file Query by search 要使用该方法: 从 Query 类型选择器中选择 Search。填写搜索表格&#xff1a;(和 J…

2023第十三届中国数字营销与电商创新峰会 嘉宾揭晓

2023第十三届中国数字营销与电商创新峰会将于7月6日-7日在上海召开。 本次峰会将通过七大热点主题帮助品牌主突破模式能力&#xff0c;回归初心、精耕细作&#xff0c;实现可持续增长&#xff1b;提升产品能力&#xff0c;实现可持续长期增长&#xff1b;优化营销能力&#xf…

HTTP第11讲——HTTP的特点

灵活可扩展 首先&#xff0c; HTTP 协议是一个“灵活可扩展”的传输协议。 HTTP 协议最初诞生的时候就比较简单&#xff0c;本着开放的精神只规定了报文的基本格式&#xff0c;比如用空格分隔单词&#xff0c;用换行分隔字段&#xff0c;“headerbody”等&#xff0c;报文里的…

分析车载蓝牙通话只有前喇叭声音,后面喇叭无声背后原因

车载蓝牙通话只有前喇叭声音&#xff0c;后面喇叭无声背后原因 大家有没有注意到车载蓝牙连接后通话的时候只有前喇叭的有声音&#xff0c;后面喇叭没声音呢&#xff1f;特别是后装的车载多媒体上基本都是这样&#xff0c;细思下为什么这样的原因&#xff0c; 采访后装车载技术…

【软考备战·五月模考】希赛网五月模考软件设计师上午题

文章目录 一、成绩报告二、错题总结第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题 三、知识查缺 题目及解析来源&#xff1a;2023上半年软考-模考大赛 一、成绩报告 二、错题总结 第一题 解析&#xff1a; 瀑布模型 中各个活动按 线性顺序 连…

【Spring全家桶系列】AspectJ表达式的书写与SpringAOP下的五种通知类型

⭐️前面的话⭐️ 本文已经收录到《Spring框架全家桶系列》专栏&#xff0c;本文将介绍AspectJ表达式的书写与SpringAOP下的五种通知类型。 &#x1f4d2;博客主页&#xff1a;未见花闻的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4…

基于ArcGIS实现陕西省1:250000比例尺地形图分幅和编号

1地形图的分幅与编号原理 我国1:1000000地形图的分幅采用国际1:1000000地图分幅标准&#xff0c;而其他比例尺地形图分幅以1:1000000比例尺地形图为基准进行分幅。每幅1:1000000地形图范围是经差6、纬差4&#xff1b;纬度60~ 76之间经差12、纬差4&#xff1b;纬度76~ 88之间经…

数据结构之数组对栈的实现

目录 1.什么是栈 2.栈的基本操作 3.栈的实现 1.结构体与函数接口 2.初始化栈 3.销毁栈 4.入栈 5.出栈 6.返回栈元素数量大小 7.判空 8.打印栈 1.什么是栈 栈是一种特殊的线性表&#xff0c;其中只允许固定的一端进行插入与删除&#xff0c;进行输出插入删除的那一端我…

振幅调制器【Multisim】【高频电子线路】

目录 一、实验目的与要求 二、实验仪器 三、实验内容与测试结果 1、观测集电极调幅器输出信号波形&#xff0c;测量调幅度 2、观察集电极调幅器输出信号频谱&#xff08;Fourier analysis&#xff09; 3、改变V1幅度为0.8Vpk&#xff0c;观测输出波形&#xff0c;说明原…

MySQL函数详细

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️树高千尺&#xff0c;落叶归根人生不易&…

设计模式之【享元模式】,共享单车火起来并不是没有原因的

文章目录 一、什么是享元模式1、享元模式的角色2、享元模式应用场景3、享元模式的内部状态和外部状态4、享元模式的优缺点5、享元模式跟单例的区别6、享元模式跟缓存的区别7、享元模式注意事项及细节 二、实例1、享元模式一般写法2、俄罗斯方块案例3、购票业务案例4、数据库连接…

win2012/win2016/win2019 IIS部署SSL证书访问https(支持多站点)

请根据操作系统、站点部署数量选择以下相应参考文档&#xff0c;文档仅供参考。 A、windows2008iis7环境SSL部署https单/多站点 B、linux系统SSL部署https单/多站点 C、windows2003系统SSL单站点部署https 部署https(ssl)后设置301跳转将http跳转到https 亚数机房香港IP部…

(2022 EMNLP)(SEMGraph)将情感知识和眼动结合到一个图架构中

论文题目&#xff08;Title&#xff09;&#xff1a;SEMGraph: Incorporating Sentiment Knowledge and Eye Movement into Graph Model for Sentiment Analysis 研究问题&#xff08;Question&#xff09;&#xff1a;基于眼动的情感分析&#xff0c;旨在绘制基于眼动的情感关…

【Java多线程编程】解决线程的不安全问题之synchronized关键字

前言&#xff1a; 当我们进行多线程编程时候&#xff0c;多个线程抢占系统资源就会造成程序运行后达不到想要的需求。我们可以通过 synchronized 关键字对某个代码块或操作进行加锁。这样就能达到多个线程安全的执行&#xff0c;因此我把如何使用 synchronized 进行加锁的操作…

PVE安装高大全固件

PVE安装高大全的时候&#xff0c;把IMG挂在光驱上&#xff0c;发现无法运行。 后来明白了&#xff0c;openwrt的镜像直接就是个系统磁盘镜像&#xff0c; 没有引导启动项和安装程序&#xff0c;度娘和CSDN后才知道。 ———— 创建个虚拟机&#xff0c;按照引导创建虚拟机即…

女网红靠GPT-4交1000+男友,聊天按分钟收费,一周收入50万

来源 | 量子位 作者 | 鱼羊 注意看&#xff0c;这个女人叫卡琳&#xff0c;靠着GPT-4&#xff0c;她现在同时谈着1000男朋友。 对&#xff0c;我知道事情听上去有些离谱。就连GPT-4自己&#xff0c;都直呼“我一个AI都觉得非常不常见”。 但是先别急&#xff0c;因为更让人挠头…

一个用于Allen脑图谱基因数据的工具箱|abagen详细使用教程-获取基于脑区的基因表达矩阵(脑区*gene)

艾伦人类脑图谱&#xff08;Allen Human Brain Atlas&#xff09; 艾伦人类脑图谱是一个由艾伦脑科学研究所(Allen Institute for Brain Science)开发的在线基因表达图谱数据库&#xff0c;旨在提供人类大脑各个区域的细胞类型和基因表达信息。这个数据库包含了人类全基因组微…