Linux - 简明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
Linux - 简明Shell编程07 - 数组(Array)的更多相关文章
- Shell - 简明Shell入门07 - 数组(Array)
示例脚本及注释 #!/bin/bash test0=() # 定义数组 test1=(a b c d e f) # 定义数组 test2=( # 定义数组 'A?' "BB!" C ...
- Linux - 简明Shell编程12 - 定制输出(ColorOutput)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo -e "\ ...
- Linux - 简明Shell编程14 - 操作符(Operator)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo "No c ...
- Linux - 简明Shell编程01 - 第一个脚本(HelloShell)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo "hell ...
- Linux - 简明Shell编程02 - 变量(Variable)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash v1=test-variabl ...
- Linux - 简明Shell编程03 - 字符串(String)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash str="Shell ...
- Linux - 简明Shell编程04 - 判断语句(If)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一 ...
- Linux - 简明Shell编程08 - 函数(Function)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash function Check( ...
- Linux - 简明Shell编程09 - 重定向(Redirection)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash pwd > 1.log ...
随机推荐
- 用maven创建工程
用maven创建工程 开始 mvn archetype:generate 遇到问题:冗长的工程原型列表和等待时间 改进 mvn archetype:generate -DarchetypeCatalo ...
- KBEngine WebConsole Guide
https://github.com/kbengine/kbengine/tree/master/docs
- 二、redis集群搭建
redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...
- jquery.load问题
简单Jquery--Ajax应用 作为一个新手,最近自己写了一个人主页,虽然性能不怎么样,但就出现的各种大的小的问题拿出来与大家分享分享. ----DanlV 描述 错误描述 自己不知道什么原因,直接 ...
- CSS3-loading动画(二)
上次分享了四个CSS3的加载动画,今天继续(标题接上一次). 在线demo:http://liyunpei.xyz/loading.html (持续更新) 请注意:代码中的关键帧动画有的用的lin ...
- .NetCore~C#6的一些新特性
回到目录 在进行.netCore平台后,由于它的版本在.net4.6,C#6之后,所以它的语法也有一些新的特性,主要表现在以下几个方面 只读属性初始化 static string Hello => ...
- 解决win10系统以太网适配器的驱动程序可能出现问题
插上网线显示未连接-连接可用,连上无线显示未连接-连接不可用,右下角显示感叹号 ,以太网和无线属性显示ipv4未连接详细信息为空,在设备管理器里卸载网卡驱动重装上仍然没有,通过windoes自带的网络 ...
- React 实践项目 (三)
React在Github上已经有接近70000的 star 数了,是目前最热门的前端框架.而我学习React也有一段时间了,现在就开始用 React+Redux 进行实战! 上回说到使用Redux进行 ...
- MFC常见问题以及解决方法(2)_Cstring和string互相转换
MFC默认编码是unicode(自己改成多字符集是不行的),对话框中对字符串的处理都是宽字符,而且添加变量会默认是CString类型,当你代码中想用string但又遇到必须转为CString的情况,就 ...
- 【转载】BAT 批处理脚本教程
来源:http://www.cnblogs.com/glaivelee/archive/2009/10/07/1578737.html BAT 批处理脚本 教程 第一章 批处理基础第一节 常用批处 ...