首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux: 深入理解bash关联数组

为了解决这一问题,Bash 4.0 及以上版本引入了关联数组(Associative Arrays),允许我们使用字符串作为键,从而实现类似于其他编程语言中的 Map 或字典的功能。...本文将详细介绍 Bash 关联数组的使用方法及其实际应用。 关联数组的声明与初始化 要在 Bash 中使用关联数组,首先需要声明它。可以使用 declare -A 关键字来声明一个关联数组。.../bin/bash # 声明一个关联数组 declare -A myMap # 向关联数组中添加键值对 myMap["name"]="Alice" myMap["age"]="28" myMap[".../bin/bash # 声明并初始化关联数组 declare -A myMap myMap["name"]="Alice" myMap["age"]="28" myMap["city"]="Seattle...通过掌握关联数组的声明、访问、遍历和删除方法,以及其实际应用场景,我们可以编写出更加高效和易读的 Bash 脚本。在日常工作和开发中,合理使用关联数组将大大提高我们的工作效率。

11810
您找到你想要的搜索结果了吗?
是的
没有找到

Shell脚本编程_shell简单脚本

/to/script.sh 脚本错误常见的有三种: 语法错误:会导致后续的命令继续执行,可以用 bash -n 检查错误,提示的出错行数不一定是准确的。...尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。...数组名和索引: 索引的编号从0开始,属于数值索引 索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0 版本之后开始支持 bash 的数组支持稀疏格式(索引连续) (2) 声明数组...#普通数组可以事先声明,直接使用 declare -a ARRAY_NAME #关联数组必须先声明,再使用 declare -A ARRAY_NAME #两者不可相互转换 (3) 数组赋值 ① 一次只赋值一个元素...-a 示例: [root@aliyunhost01~]#declare -a declare -a BASH_ARGC='()' declare -a BASH_ARGV='()' declare -

7.9K10

shell基础

重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。 # 3、 shell脚本能干啥?...语法:read [选项] 变量名 常见选项选项 释义 -p 定义提示用户的信息 -n 定义字符数(限制变量值的长度) -s 不显示(不显示用户输入的内容) -t 定义超时时间,默认单位为秒(限制用户输入变量值的超时时间...) 目的: 给变量做一些限制,固定变量的类型,比如:整型、只读 用法:declare 选项 变量名=变量值 常用选项选项 释义 举例 -i 将变量看成整数 declare -i A=123 -r 定义只读变量...declare -r B=hello -a 定义普通数组;查看普通数组 -A 定义关联数组;查看关联数组 -x 将变量通过环境导出 declare -x AAA=123456 等于 export...-a # 4、关联数组定义 # 1、首先声明关联数组 declare -A asso_array1 declare -A asso_array1 declare -A asso_array2 declare

1.8K30

Shell 内建命令:Shell 的内在魔力

else echo "Invalid password"fiexit 用来退出当前 shell 进程,并返回一个退出状态可以使用 $?...接收这个退出状态可以接受一个整数值作为参数,代表退出状态,如果指定,默认状态值是 0退出状态为 0 表示成功,退出状态非 0 表示执行出错或失败退出状态只能是一个介于 0~255 之间的整数,其中只有...typeset 已经被废弃,建议使用 declaredeclare 的用法为:# - 表示设置属性# + 表示取消属性# aAfFgilprtux 表示具体的选项declare [+/-] [aAfFgilprtux...-A name声明变量为关联数组(支持索引下标为字符串)。-i name 将变量定义为整数型。-r name=value 将变量定义为只读(不可修改和删除),等价于 readonly name。.../bin/bash# 将变量声明为整数并进行计算declare -i x y retx=11y=22ret=$x+$yecho $ret # 33内建命令是 Shell 的核心功能,它们提供了快速且强大的工具来处理日常任务

10600

SHELL(bash)脚本编程一:变量

bash提供一维的索引和关联数组变量,索引数组是以数字为下标的数组,关联数组是以字符串为下标的数组(类似其他语言中的map或dict)。...#索引数组赋值的一般形式: name_index=(aa bb cc dd ee) #关联数组赋值之前,必须先通过内置命令declare进行声明,然后才能赋值: declare -A name_associate...这是两个起同样作用的命令,用来声明变量; #如声明一个普通变量: declare name[=value] #如声明一个只能存储数字的变量: declare -i name[=value] #选项-i表示为变量增加一个数字属性...declare -x name[=value] #如声明一个只读变量 declare -r name[=value] 以上选项可以使用命令declare +OPTION name撤销变量name的属性...not exist"} -bash: var_5: not exist ${parameter:+word} 如果变量状态为unset或值为空,什么也返回,否则返回word的结果值。

2.7K40

【linux命令讲解大全】195.Bash 命令解析:declare 的用法和功能详解

*设置属性的选项: -a 创建数组(如果支持)。 -A 创建关联数组(如果支持)。 -i 增加整型属性。 +i 删除整型属性。 -l 增加小写属性,变量的值将转换为小写。 +l 删除小写属性。...返回值 declare 返回true除非你提供了非法选项或赋值错误。具体导致异常的情况请查看讨论章节的关于异常情况。...season=('Spring' 'Summer' 'Autumn' 'Winter') declare -ar season # 显示所有数组。 declare -a # 定义关联数组。...declare -A fruits=(['apple']='red' ['banana']='yellow') # 显示所有关联数组。...关于异常情况 有多种原因导致declare失败,关于这些情况可以参考bash在线文档declare部分(最新版),或执行info bash查看declare部分最后一大串an attempt is开头的句子

19710

【linux命令讲解大全】055.readonly命令:标记Shell变量或函数为只读

选项 -a:指向数组。 -A:指向关联数组。 -f:指向函数。 -p:显示全部只读变量。 --:在它之后的选项无效。...-a` seasons=('spring' 'summer' 'autumn' 'winter') # 为数组添加只读属性时可以不加 `-a` 选项 readonly seasons declare...-A man=(['age']=23 ['height']='190cm') # 为关联数组添加只读属性时可以不加 `-A` 选项 readonly man function foo(){ echo...#定义只读变量并初始化 那么当用户直接修改该只读变量时就会报错,如下所示: [root@localhost ~]# test='my' #试图修改只读变量的值 -bash...注意: 该命令是bash内建命令,相关的帮助信息请查看help命令。 declare +r不能去除只读属性,unset不能删除只读变量。

23310

BashShell变量

简介 Bash Shell 使用「环境变量」来存储有关 Shell 会话和工作环境的信息。...BASH_ALIASES 含有当前已设置别名的关联数组 BASH_ARGC 含有传入子函数或 Shell 脚本的参数总数的数组变量 BASH_ARCV 含有传入子函数或 Shell 脚本的参数的数组变量...BASH_CMDS 关联数组,包含 Shell 执行过的命令的所在位置 BASH_COMMAND Shell 正在执行的命令或马上就执行的命令 BASH_ENV 若设置了该变量,每个 Bash 脚本会在运行前先尝试运行该变量定义的启动文件...被删除的目录名会用一组英文句点替换 PS3 select 命令的提示符 PS4 如果使用了 bash 的 -x 选项,在命令行之前显示的提示信息 PWD 当前工作目录 RANDOM 返回一个 0~32767...有关 Bash Shell 选项选项参数更详细介绍可参考 Advanced Bash-Scripting Guide 或官方手册 man bash

2.4K30

【linux命令讲解大全】065.深入了解export命令:设置导出属性与环境变量管理

选项 -f: 指向函数。 -n: 删除变量的导出属性。 -p: 显示全部拥有导出属性的变量。 -pf: 显示全部拥有导出属性的函数。 -nf: 删除函数的导出属性。 --: 在它之后的选项无效。...Q:数组和关联数组也可以设置导出属性吗? A:是可以的(如果你的 bash 支持它们),不过有些问题(参考链接2)。...注意 该命令是 bash 内建命令,相关的帮助信息请查看 help 命令。...知识点 在 info bashbash 在线文档 的 3.7.3 节提到了 shell 执行环境,其中涉及变量和函数的内容如下: shell parameters that are set by...-x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_CLIENT="192.168.2.111 2705 22" declare -x SSH_CONNECTION

17110

Linux Shell基础篇三 - 内置命令

设置变量的属性 1 declare [+/-][aArxif][变量名称=设置值] 选项 说明 +/- “-“可用来指定变量的属性,”+”则是取消变量所设的属性。...变量默认为字符串类型,可更改为整型declare -i sum=100+300+50 f function,设置为一个函数变量 实现关联数组变量 关联数组也称为”键值对(key-value)“数组,...1 declare -A 关联数组变量名=([字符串key1]=值1 [字符串key2]=值2 ...)...declare也可以用于定义普通索引数组,-a 参数创建普通或索引数组,-A 创建关联数组: declare -a 关联数组变量名=(值1 值2 ...) declare -a 关联数组变量名=([0]..., 关联数组无法使用索引获取,不用declare -A实现的不是关联数组,而是只有最后一个值赋值成功的索引数组。

1.3K30

【linux命令讲解大全】198.Shell命令解析:export和exportfs的用途和参数解释

选项 -f:指向函数。 -n:删除变量的导出属性。 -p:显示全部拥有导出属性的变量。 -pf:显示全部拥有导出属性的函数。 -nf:删除函数的导出属性。 --:在它之后的选项无效。...Q:数组和关联数组也可以设置导出属性吗? A:是可以的(如果你的bash支持它们),不过有些问题。 Q:为什么我在查看变量或函数导出属性的时候显示的开头是 declare?...A:因为 declare 也能够设置变量或函数的导出属性,详见 declare 命令。 注意 该命令是bash内建命令,相关的帮助信息请查看 help 命令。...知识点 在 info bashbash 在线文档的 3.7.3节提到了shell执行环境,其中涉及变量和函数的内容如下: shell parameters that are set by variable...显示当前共享列表的时候,同时显示共享的选项

36010

第三十二章 : 流程控制:case 分支

当与之相匹配的模式找到之后,就会执行与该模式相关联的命令。若找到一个模式之后,就不会再继续寻找。...把这个模式做为 case 命令的最后一个模式,是一个很好的做法,可以捕捉到任意一个与先前模式匹配的数值;也就是说,捕捉到任何可能的无效值。...这里,我们更改了 case-menu 程序的代码,用字母来代替数字做为菜单选项。注意新模式如何使得大小写字母都是有效的输入选项。...Here we seea script that tests a character: 早于版本号4.0的 bash,case 语法只允许执行与一个成功匹配的模式相关联的动作。...Modern versions of bash, add the “;;&” notation toterminate each action, so now we can do this: 大多数情况下这个脚本工作是正常的

14100

【linux命令讲解大全】207.「setsid」和「unset」命令:管理进程会话和删除变量的强大工具

返回值 返回成功除非选项错误或要删除的变量或函数有只读属性。 例子 # 删除变量。 declare paper_size='B5' unset -v paper_size # 删除函数。...; } unset -f show_result # 当指定选项时,优先删除变量,如果失败则删除函数。...declare -F|grep aa # 演示unset使用-n选项,name指定了引用变量时的情况。...b} # 指定-n选项时 unset -n b # 引用变量b已被删除 declare -p b # 被引用的变量a未被删除 declare -p a # 演示unset不使用-n选项,name指定了引用变量时的情况...b} # 指定-n选项时 unset b # 引用变量b未被删除,显示declare -n b="a" declare -p b # 被引用的变量a被删除 declare -p a 注意 该命令是bash

21910

【DB笔试面试445】Oracle中的异常可以分为哪几类?

(2)当程序出现异常时,程序立即暂停工作,跳转到EXCEPTION部分。使用WHEN … THEN来处理系统定义的异常。使用WHEN OTHERS THEN处理未定义的异常。...NO_DATA_FOUND SELECT INTO没有找到数据 ORA-01422 TOO_MANY_ROWS SELECT INTO返回多行 ORA-06501 PROGRAM_ERROR 内部错误,需重新安装数据字典视图和...内存不够或内存被破坏触发的内部错误 ORA-06502 VALUE_ERROR 赋值操作,变量长度不足,触发该异常 ORA-06504 ROWTYPE_MISMATCH 宿主游标变量与PL/SQL变量有兼容行类型...Oracle提供了2个函数SQLCODE和SQLERRM用于返回错误信息: l SQLCODE:返回错误代码 l SQLERRM:返回与错误代码关联的消息 这样就可以在错误日志表中记录程序在执行过程中发生的错误信息了...预定义异常和自定义异常都是与Oracle错误相关的,并且出现的Oracle错误会隐含地触发相应的异常;而自定义异常与Oracle错误没有任何关联,它是由开发人员为特定情况所定义的异常。

1.7K10

Shell基础入门

通过Shell命令与编程语言来提高linux系统的管理工作效率 Shell的运行过程 当用户下达指令给该操作系统的时候,实际上是把指令告诉shell,经过shell解释,处理后让内核做出相应的动作。...实现关联数组变量 declare设置变量的属性语法 declare [+/-][aArxif][变量名称=设置值] +/-[变量名称=设置值] +/-""可用来指定变量的属性,"+"则是取消变量所设的属性...这就好比python中的字典,java中的map declare -A 关联数组变量名=([key1]=值1 [key2]=值2 ...) declare 也可以用于定义普通索引数组 -a:参数创建普通或索引数组...-A:创建关联数组 declare -a 关联数组变量名=(值1 值2 ...) declare -a 关联数组变量名=([O]=值1 [1]=值2 ...)...array1[*]}" echo "打印array1数组第三个元素: ${array1[2]}" printf "\n" #创建关联数组 echo "创建关联数组" declare -A array2

2.4K31
领券