Shell - 简明Shell入门07 - 数组(Array)
2023-09-14 09:00:40 时间
示例脚本及注释
#!/bin/bash
test0=() # 定义数组
test1=(a b c d e f) # 定义数组
test2=( # 定义数组
'A?'
"BB!"
CCC
)
test1[0]=000 # 单独定义数组的元素,重定义元素
test1[1]=111
test1[2]=222
test1[6]=ggg # 单独定义数组的元素,添加元素
test1[9]=999 # 可以使用不连续的下标,而且下标的范围没有限制
echo '读取指定下标的元素 ${test1[0]}: ' ${test1[0]}
echo '读取指定下标的元素 ${test1[6]}: ' ${test1[6]}
echo '读取数组中的所有元素 ${test0[@]}: ' ${test0[@]}
echo '读取数组中的所有元素 ${test1[*]}: ' ${test1[*]}
echo '读取数组中的所有元素 ${test2[*]}: ' ${test2[*]}
echo '读取数组中的下标列表 ${!test1[*]}: ' ${!test1[*]}
echo '读取数组中的下标列表 ${!test2[@]}: ' ${!test2[@]}
echo '读取数组中指定范围的元素 ${test1[@]:2}: ' ${test1[@]:2}
echo '读取数组中指定范围的元素 ${test1[@]:2:4}: ' ${test1[@]:2:4}
echo "数组test0中元素的个数为:" ${#test0[@]}
echo "数组test1中元素的个数为:" ${#test1[*]}
echo "数组test2中下标为2的元素长度为:" ${#test2[2]}
test3=(aaa bbb ccc ddd eee fff ggg)
echo '读取数组中的所有元素 ${test3[*]}: ' ${test3[*]}
unset test3[0] # 删除指定元素
echo '读取数组中的所有元素 ${test3[*]}: ' ${test3[*]}
unset test3 # 删除所有元素
echo '读取数组中的所有元素 ${test3[*]}: ' ${test3[*]}
# ### 定义数组
# - Bash Shell只支持一维数组,没有限定数组的大小;
# - 用括号来表示数组,元素用"空格"符号分割开,定义形式为“数组名=(值1 值2 ... 值n)”;
#
#
# ### 读取数组
# - 数组元素的下标由0开始编号,利用下标读取数组中的元素,读取形式为“${数组名[下标]}”;
# - 数组的下标可以是整数或算术表达式,其值大于或等于0;
# - 使用下标为@符号或*符号可以读取数组中的所有元素,读取形式为“${数组名[@]}”;
# - 读取数组中指定范围的元素,读取形式为“${数组名[@或*]:起始下标:长度}”
#
#
# ### 获取数组元素的个数
# - 获取数组元素的个数的方法与获取字符串长度的方法相同;
#
#
# ### 删除数组元素
# - 删除形式为“unset 数组名[下标]”,如果使用下标则删除全部元素;
#
#
# ### 关联数组(Associative Array)
# - 使用字符串作为数组下标;
# - 关联数组的下标和值一一对应,称为键值对;键是唯一的,值可以不唯一;
# - 使用关联数组之前,需要使用“declare -A 变量名”命令显示声明为关联数组;
# - 关联数组的操作语法和数组的操作语法基本一致;
declare -A assArray # 定义关联数组
assArray=([1st]=aaa [2nd]=bbb) # 添加元素到关联数组
assArray[3rd]=ccc # 添加元素到关联数组
echo '读取关联数组指定索引的值 ${assArray[1st]}: ' ${assArray[1st]}
echo '读取关联数组的下标列表 ${!assArray[*]}: ' ${!assArray[*]}
echo '读取关联数组的下标列表 ${!assArray[@]}: ' ${!assArray[@]}
echo '读取关联数组的所有的值 ${assArray[*]}: ' ${assArray[*]}
echo '读取关联数组的所有的值 ${assArray[@]}: ' ${assArray[@]}
echo '读取关联数组键值对的个数 ${#assArray[*]}: ' ${#assArray[*]}
echo '读取关联数组键值对的个数 ${#assArray[@]}: ' ${#assArray[@]}
# 读取关联数组的所有键值对
for key in ${!assArray[*]}
do
echo "${key} :${assArray[$key]}"
done
相关文章
- 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装
- Java实现 LeetCode 209 长度最小的子数组
- Java实现 蓝桥杯 算法训练 删除数组零元素
- Linux Shell脚本自动化编程实战- shell函数
- 获取shell脚本自身所在目录的Shell脚本分享
- LeetCode(108):将有序数组转换为二叉搜索树
- Leetcode.1664 生成平衡数组的方案数
- C# 移除数组中重复数据
- 剑指 Offer 11. 旋转数组的最小数字-优化算法
- Leetcode 238. 除自身以外数组的乘积
- [LeetCode] 448. 找到所有数组中消失的数字 ☆
- C语言使用技巧(十六):完整解析函数返回二维数组的常用技巧(END)
- shell循环命令,循环操作数组中的数据
- MYSQL提权之反弹SHELL——数据库提权属于webshell到管理员的纵向提权,本质还是利用udf提权,无非是在mysql自定义函数中使用了反弹shell而已
- php二维数组排序
- 【Leetcode刷题Python】剑指 Offer 04. 二维数组中的查找
- 【LeetCode】718. 最长重复子数组
- shell - 06 - Shell编程中的常用工具 -文件查找及操作
- shell - 08 - Shell文本处理三剑客 - sed -编辑命令详解
- shell - 09 - Shell文本处理三剑客 - sed -文件内容操作详解
- shell脚本中实现数组变量