shell脚本学习总结02--数组
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引。
数组的定义方法:
在单行中使用一列值定义一个数组
[root@new ~]# array1=(1 2 3 4 5 6)
使用索引-值定义
[root@new ~]# array2[0]="test1" [root@new ~]# array2[1]="test2" [root@new ~]# array2[2]="test3"
使用key-value键值对
[root@new ~]# fruits=([apple]=5 [orange]=3 [banana]=4) [root@new ~]# echo ${fruits[apple]} 4
打印数组元素:
打印出数组指定索引的数组元素内容
[root@new ~]# echo ${array2[0]} test1
打印出数组中的所有值
[root@new ~]# echo ${array2[*]}
test1 test2 test3
或者:
[root@new ~]# echo ${array2[@]}
test1 test2 test3
打印出数组的长度
[root@new ~]# echo ${#array2[*]} 3
[root@new ~]# array=(0 1 2 3 4) [root@new ~]# echo ${array[*]:1:3} 1 2 3
更多用法参照--变量字符串的常用操作shell脚本学习总结05--变量与环境变量
列出数组索引
[root@new ~]# echo ${!array2[*]}
0 1 2
删除数组
删除单个数组
[root@new ~]# unset array2[0] [root@new ~]# echo ${array2[*]} test2 test3
删除整个数组
[root@new ~]# unset array2 [root@new ~]# echo ${array2[*]} [root@new ~]#
脚本应用:
[root@new sbin]# cat array.sh #/bin/bash log=(`ls /var/log/httpd`) for((i=0;i<${#log[*]};i++)) do echo "The $i log is ${log[i]}" done [root@new sbin]# sh array.sh The 0 log is www.a.org-access_log The 1 log is www.a.org-error_log The 2 log is www.b.net-access_log The 3 log is www.b.net-error_log
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了