Shell - 简明Shell入门07 - 数组(Array)
示例脚本及注释
#!/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
Shell - 简明Shell入门07 - 数组(Array)的更多相关文章
- Shell - 简明Shell入门
本文以示例和注释的方式,对Shell编程的基本知识点进行了总结和回顾,所有脚本均已做了基本的调试和验证. Shell - 简明Shell入门 01 - 第一个脚本 脚本的定义.执行方法以及echo命令 ...
- Shell - 简明Shell入门01 - 第一个脚本(HelloShell)
示例脚本及注释 #!/bin/bash echo "hello shell!" # 打印字符串"hello shell!" echo "Date: & ...
- Shell - 简明Shell编程
本文是对Shell脚本编程的总结和回顾,所有涉及的脚本均已做了基本的调试和验证. [toc] 测试环境信息 [root@CentOS7 ~]# uname -a Linux CentOS7 3.10. ...
- Shell - 简明Shell入门14 - 操作符(Operator)
示例脚本及注释 #!/bin/bash echo "No code, just some comments." # ### 通配符 # * 代表任意(0个或多个)字符 # ? 代表 ...
- Shell - 简明Shell入门15 - 调试(Debug)
示例脚本及注释 #!/bin/bash -x for filename in t1 t2 t3 do touch $filename.txt echo "Create new file: $ ...
- Shell - 简明Shell入门13 - 用户输入(UserInput)
示例脚本及注释 1 - arguments #!/bin/bash if [ -n "$1" ];then # 验证参数是否传入 echo "The first para ...
- Shell - 简明Shell入门12 - 定制输出(ColorOutput)
示例脚本及注释 #!/bin/bash echo -e "\033[32m" # 设置输出属性,绿色字体 echo "This is a test!" echo ...
- Shell - 简明Shell入门11 - 调用脚本(CallTheScript)
示例脚本及注释 主脚本: CallTheScript.sh #!/bin/bash . ./11-subscript.sh # 调用其他脚本;注意点号"."和文件路径之间有一空格; ...
- Shell - 简明Shell入门09 - 重定向(Redirection)
示例脚本及注释 #!/bin/bash pwd > 1.log # 输出重定向到指定文件 date 1> 1.log # ">"与"1>" ...
随机推荐
- 2018.10.30 NOIP模拟 字胡串(单调栈+容斥)
传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码
- ueditor编辑器视频上传不能预览的问题
ps:来源 https://blog.csdn.net/eadela/article/details/76264168 修改ueditor.all.js文件 ueditor.all.js,17769行 ...
- dijkstra算法(贪心算法)——解决最短路径问题
最短路径 给定一张带权图和其中的一个点(作为源点),求源点到其余顶点的最短路径 基本思想 1)源点u,所有顶点的集合V,集合S(S中存有的顶点,他们到源点的最短路径已经确定,源点u默认在S中),集合V ...
- IntelliJ IDEA 2017版 spring-boot2.0.4的yml配置使用
一.必须配置字端两个 server: port: 8080 servlet: context-path: /demo 二.两种mvc转换springboot,一种是注解,一种就是.yml或proper ...
- react优化--pureComponent
shouldComponentUpdate的默认渲染 在React Component的生命周期中,shouldComponentUpdate方法,默认返回true,也就意味着就算没有改变props或 ...
- oracle 操作,偶尔记一下
一.根据更新时间排序 1.插入insert into t_user t (t.user_id,t.user_name,t.create_time,t.update_time)values('10',' ...
- 高性能高可用的分布式唯一ID服务——mooon-uniq-id
目录 目录 1 1. 前言 1 2. 名词 1 3. 功能 1 4. 唯一性原理 2 5. 系统结构 2 5.1. mooon-uniq-agent 2 5.2. mooon-uniq-master ...
- 1114 Family Property
This time, you are supposed to help us collect the data for family-owned property. Given each person ...
- Ng第七课:正则化与过拟合问题 Regularization/The Problem of Overfitting
7.1 过拟合的问题 7.2 代价函数 7.3 正则化线性回归 7.4 正则化的逻辑回归模型 7.1 过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设预测可能能够非常好地适应训练 ...
- 浅尝辄止之MongoDB
1 简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储 解决方案.MongoDB将数据存储为一个文档,数据结构由键 ...