shell 数组和算法
2021/8/2 7:07:19
本文主要是介绍shell 数组和算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Shell 数组和算法
一、数组
1、数组的定义方法
- 使用括号包含数组中的元素,每个元素都有自己的下标索引,下标起始值为 0,数组中元素可以为数组或字符创等
方法一: 数组名=(value0 value1 value2 ...) 方法二: 数组名=([0]=value [1]=value [2]=value ...) 方法三: 列表名=“value0 value1 value2 ...” 数组名=($列表名) 方法四: 数组名[0]="value" 数组名[1]="value" 数组名[2]="value"
①、方法一
②、方法二
③、方法三
④、方法四
2、数组包括的数据类型
- 数值类型
- 字符类型(字符串):使用“x”或 'x'定义,防止元素当中有空格,元素按空格分割
3、获取数组长度
arr_number=(1 2 3 4 5) arr_length=${#arr_number[*]} ${#arr_number[@]}
4、获取数据列表
echo ${arr_number[*]} echo ${arr_number[@]}
5、读取某下标赋值
arr_index2={arr_number[2]} echo $arr_index2
6、数组遍历
#!/bin/bash arr_number=(1 2 3 4 5) for i in ${arr_number[@]} do echo $i done
7、数组切片
arr=(1 2 3 4) echo ${arr[@]} #输出整个数组 echo ${arr[@]:0:2} #获取 ${数组名[@或*]:起始下标位置:长度}的值 echo ${arr[@]:1:3} echo ${arr[@]:2:3}
8、数组替换
arr=(1 2 3 4 5) echo ${arr[@]/4/66} # ${数组名[@或*]/查找字符/替换字符} echo ${arr[@]} # 并不会替换数组原因内容 arr=(${arr[@]/4/66})#要实现改变原有数组,可通过重新赋值实现 echo ${arr[@]}
9、数组删除
arr=(1 2 3 4 5) unset arr #删除数组 echo ${arr[*]} arr=(1 2 3 4 5) unset arr[n] #删除第n个元素 echo ${arr[*]}
10、数组追加元素
方法一:按照下标进行单个添加 array_name[index]=value 方法二:在不做任何删减时,直接使用数组长度追加元素 array_name[${#array_name[@]}]=value 方法三:直接获取源数组的全部元素再加上新要添加的元素,一并重新赋予该数组,重新刷新定义索引 array_name=("${#array_name[@]}" value1 value2 ... valueN) 注: 双引号不能省略,否则数组中存在包含空格的元素时会按空格将元素拆分成多个 不能将“@”替换为“*”,如果替换为“*”,不加双引号时与“@”的表现一致,加双引号时,会将数组array_name中的所有元素作为一个元素添加到数组中 方法四:待添加元素必须用“()”包围起来,并且多个元素用空格分隔 array_name+=(value1 value2 ... valueN) 注:待添加元素必须用“()”包围起来,并且多个元素用空格分隔
(1)、方法一:按照下标进行单个添加
(2)、方法二:直接使用数组长度向后添加元素
11、向函数传数组参数
变量的第一个值。 test1(){ echo "接收到的参数列表∶ s@" newarrary= ($1) echo "新数组的值为∶ ${newarrary [*]}" } array=(3 2 1 4 5) echo"原始数组的值为∶ ${array [*]}" test1 $array 解决这个问题则需要将数组变量的值分解成单个的值,然后将这些值作为函数参数使用。在函数内部,再将所有的参数重新组合成一个新的数组变量。 test2 (){ newarrary= ($ (echo $@)) echo "新数组的值为∶ ${newarrary [*]}" } array=(3 2 1 4 5) echo "原始数组的值为∶ s{array[*]}" test2 ${array[*] }
这篇关于shell 数组和算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南