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>" ...
随机推荐
- IDEA导入MySQL包
点击[Project Structure] 点击[Modules] 在点击下面的界面 找到自己下载的MySQL包就OK了
- 2019.01.14 bzoj2752: [HAOI2012]高速公路(线段树)
传送门 线段树菜题. 题意简述:给一条nnn个点的链,链有边权,支持区间修改边权,查询在一段区间内随机选择不同的起点和终点路径的期望总边权和. 思路:考虑每条边的贡献. 考虑对于一段区间[l,r][l ...
- 2018.11.24 poj1743Musical Theme(二分答案+后缀数组)
传送门 代码: 二分答案. 然后对于预处理的heightheightheight数组分成几段. 保证每一段中都是连续的几个heightheightheight并且这些heightheightheigh ...
- s4-3 CSMA
载波侦听多路访问协议 CSMA:Carrier Sense Multiple Access 特点:"先听后发" 改进ALOHA协议的侦听/发送策略 分类 非持续式 持 ...
- python 基础_ 打印输出 循环分支2
一.在python3中的打印输出 1.输出字符串是print("hello world!!!") #输出字符串的时候可以是单引号括起来,也可以是双引号括起来.区别在于 2.输出变量 ...
- ActiveMQ实战之 Queue点对点消息
前言:ActiveMQ消息模式点对点编码 运行:先运行消费者在开启消息生产者即可接收到消息 消息生产者 /** * @摘要 测试发送单条数据的类 */ public class ZMQOneSendT ...
- 20155205 《Java程序设计》实验二(Java面向对象程序设计)实验报告
20155205 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)单元测试 (1)三种代码 举例:我们要在一个MyUtil类中解决一个百分制成绩转 ...
- chrome 字体太浅,如何设置
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-directwrite-for-ui
- dir命令详解
dir命令:DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N] [/O[[:]sortorder]] ...
- Group精确定位(canvas定位)
## <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &l ...