linux系统shell语言的数组定义与使用
2024-01-02 18:12:14
数组
变量和数组的区别
变量:用一个固定的字符串,代替一个不固定字符串
数组:用一个固定的字符串,代替多个不固定字符串
普通数组,只能使用整数作为数组索引,数字型索引
关联数组,可以使用字符串作为数组索引,文字型索引
数组定义
普通数组
declare -a 数组名 //声明,普通数组可以不声明,不声明的情况下默认是普通数组
数组名=(变量值 变量值 变量值) //多个变量值用空格隔开,索引默认从0开始顺序排列
数组名=( [索引]=变量值 [索引]=变量值 [索引]=变量值 ) //自定义索引定义变量
关联数组
declare -A 数组名 //关联数组需要提前声明
数组名=( [索引]=变量值 [索引]=变量值 [索引]=变量值 ) //关联数组的索引是字符类型
取值与更改
echo ${数组名[索引]} //数组取值,取符合索引的值
echo ${数组名[@]} //列出所有的元素
echo ${!数组名[@]} //获取所有元素的下标
echo ${#数组名[@]} //获取元素的个数
索引存在是更改变量,索引不存在是新增变量
数组名[索引]="变量值" //在数组中增加元素
数组名[索引]="变量值" //修改数组中的某个值
unset 数组名[索引] //删除数组中的某个元素
echo ${数组名[@]:开始索引:步长} //对数组进行切片处理
echo ${array1[@]:1:2} 从数组下标1开始,访问两个元素
@: : //@后的数值第一个起点,第二个步长
多维数组
declare -A 数组名 //声明
数组名=([0,1]=变量值 [0,2]=变量值 ) //[索引,索引]=变量值,定义多维数组
echo ${数组名[@]} //显示数组所有元素
echo ${数组名[0,2]} //调用数组某一个元素
访问数组
当设置任何数组变量时,可以访问它
数组名=(haha heihei baibai)
echo ${数组名[0]} //访问数组中的第一个元素
echo ${数组名[@]} //访问数组中所有的元素,等同与echo ${数组名[*]}
echo ${#数组名[@]} //统计元素的个数
echo ${!数组名[@]} //统计索引
${数组名[索引]}
//引用
循环定义数组
while遍历数组
//++i是先自加1后赋值;i++是先赋值后自加1。
#!/bin/bash
//循环读取文件,定义数组
while read line
do
//hosts:数组名
//[++i]:索引递增,++i是1开始,i++是0开始
//$line:值,即文件中的内容
hosts[++i]=$line
done < /etc/hosts //输入重定向是对while做
//输出索引每一行
for i in ${!hosts[@]}
do
echo "$i:${hosts[$i]}"
done
for遍历数组
#!/bin/bash
IFS=' ' //shell里面的一个环境变量,设置读取文件时的分隔符
for line in `cat /etc/hosts` //读取文件中的每一行
do
host[j++]=$line
done
for i in ${!host[@]}
do
echo ${host[i]}
done
IFS是for循环取值时字符串之间的分隔符
例:IFS=$'\n' //for循环取值时,空格取值改为换行符取值
for循环遍历和while循环遍历的区别
while每次取一行
for每次取一块,空格隔开
文章来源:https://blog.csdn.net/qq_59207739/article/details/135343893
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!