/bin/bash# Declare an array of fruitsfruits=("apple" "banana" "orange" "durian")# Print array's elementecho...在 shell 脚本中,字典是使用关联数组实现的。...关联数组是使用字符串而不是整数作为索引的数组。declare -A 命令用来定义字典:#!.../bin/bash# 定义一个字典,并在定义后赋值declare -A dic1dic1[name]=Currydic1[no]=30# 根据 key 打印 valueecho "the name's:...${dic1[name]}"echo "the jersey number's: ${dic1[no]}"# 定义字典并同时赋值declare -A dic2=([name]=Wiggins [no]
为了解决这一问题,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 脚本。在日常工作和开发中,合理使用关联数组将大大提高我们的工作效率。
/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 -
重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。 # 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
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 的核心功能,它们提供了快速且强大的工具来处理日常任务
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的结果值。
*设置属性的选项: -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开头的句子
文章目录 1.功能简介 2.命令格式 3.选项说明 4.常用示例 参考文献 1.功能简介 readonly 命令用于定义只读 Shell 变量和函数。...单独执行 readonly 或使用选项 -p 可以输出显示系统中所有已定义的只读变量和函数。...2.命令格式 readonly [-aAf] [-p] [name[=word] ...] 3.选项说明 -f 定义 Shell 函数。 -a 定义索引数组变量。 -A 定义关联数组变量。...readonly [-p] declare -ir BASHPID declare -r BASH_COMPLETION_COMPAT_DIR="/etc/bash_completion.d" declare...-ar BASH_REMATCH='()' ... (2)定义只读变量并初始化。
文章目录 Bash shell 中的字典 一 背景 二 脚本 三 总结 Bash shell 中的字典 一 背景 在一些运维工作中,使用字典能让当前工作事半功倍,类似 Python ,...在 GNU bash 4.2.46 中,我们也可以很方便的使用字典来完成一些工作了。...本文以一段 bash shell 为例展示一下 Bash 中字典的使用。 二 脚本 #!.../bin/bash # Declare a dictionary. declare -A Host Host=( [node1]='10.1.1.11' [node2]='10.1.1.12' [node3...通过脚本,我们对 Bash 中的字典有了一些新的认识。
选项 -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不能删除只读变量。
简介 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。
选项 -f: 指向函数。 -n: 删除变量的导出属性。 -p: 显示全部拥有导出属性的变量。 -pf: 显示全部拥有导出属性的函数。 -nf: 删除函数的导出属性。 --: 在它之后的选项无效。...Q:数组和关联数组也可以设置导出属性吗? A:是可以的(如果你的 bash 支持它们),不过有些问题(参考链接2)。...注意 该命令是 bash 内建命令,相关的帮助信息请查看 help 命令。...知识点 在 info bash 或 bash 在线文档 的 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
设置变量的属性 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实现的不是关联数组,而是只有最后一个值赋值成功的索引数组。
选项 -f:指向函数。 -n:删除变量的导出属性。 -p:显示全部拥有导出属性的变量。 -pf:显示全部拥有导出属性的函数。 -nf:删除函数的导出属性。 --:在它之后的选项无效。...Q:数组和关联数组也可以设置导出属性吗? A:是可以的(如果你的bash支持它们),不过有些问题。 Q:为什么我在查看变量或函数导出属性的时候显示的开头是 declare?...A:因为 declare 也能够设置变量或函数的导出属性,详见 declare 命令。 注意 该命令是bash内建命令,相关的帮助信息请查看 help 命令。...知识点 在 info bash 或 bash 在线文档的 3.7.3节提到了shell执行环境,其中涉及变量和函数的内容如下: shell parameters that are set by variable...显示当前共享列表的时候,同时显示共享的选项。
当与之相匹配的模式找到之后,就会执行与该模式相关联的命令。若找到一个模式之后,就不会再继续寻找。...把这个模式做为 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: 大多数情况下这个脚本工作是正常的
返回值 返回成功除非选项错误或要删除的变量或函数有只读属性。 例子 # 删除变量。 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
(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错误没有任何关联,它是由开发人员为特定情况所定义的异常。
如果不提供变量名,declare -p输出所有变量的信息。 -f -f参数输出当前环境的所有函数,包括它的定义。 -F -F参数输出当前环境的所有函数名,不包含函数定义。...~# echo $((1.2+1)) -bash: 1.2+1: syntax error: invalid arithmetic operator (error token is ".2+1") 如果在...$ declare -a foo $ foo=A $ echo ${foo[0]} A 上面例子中,foo是一个数组,赋值的时候不指定位置,实际上是给foo[0]赋值。...关联数组 关联数组使用字符串而不是整数作为数组索引。 declare -A可以声明关联数组。...可以直接使用变量名创建数组,关联数组则必须用带有-A选项的declare命令声明创建。
通过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
[[ 1 =~ re ]] 使用 Bash 的正则表达式匹配运算符来检查 return 0 表示输入与模式匹配,而 return 1 表示不匹配。...Bash 对空格和引号非常敏感;不给变量加引号可能会导致意外结果,特别是如果你的输入可能包含空格或特殊字符。 另一种常用的方法是使用 declare 内建命令与 -p(特定)选项和 -i 整数属性。.../bin/bash VAR=$1 if declare -p VAR >/dev/null && [ "$VAR" -eq "$VAR" ] 2>/dev/null; then echo "The...variable is a number: $VAR" else echo "Need a number " fi 然而,这种方法可能有一些不一致性,并且不如正则表达式方法那样健壮,因为 declare...参考文档: stackoverflow question 806906 help declare
领取专属 10元无门槛券
手把手带您无忧上云