首页 > 系统相关 >[ Shell ] 在 Bash 中如何使用“字典”

[ Shell ] 在 Bash 中如何使用“字典”

时间:2023-06-17 18:11:18浏览次数:69  
标签:Shell layout echo cell XX1234 dict key Bash 字典

https://www.cnblogs.com/yeungchie/

定义

declare -A dict

赋值

批量赋值

dict=([a]=1 [b]=2 [c]=3)

追加赋值

dict[lib]=top
dict[cell]=XX1234
dict[view]=layout

取值

取值方式与数组一样。

echo "${dict[a]}"
# 1

echo "${dict[cell]}"
# XX1234

打印所有 key 和 value

echo ${!dict[*]}
# cell view a b c lib

echo ${dict[*]}
# XX1234 layout 1 2 3 top

for k in ${!dict[*]}; do
    echo "$k ${dict[$k]}"
done
# cell XX1234
# view layout
# a 1
# b 2
# c 3
# lib top

存在的问题

不建议 key 中有空格,虽然可以赋值和取值,但无法正确遍历。

dict[q w e]=123

创建一个 key 为 "q w e",这里加不加引号效果一样

可以正常取值:

echo ${dict[q w e]}
# 123

key="q w e"
echo ${dict[$key]}
# 123

遍历一下:

for k in ${!dict[*]}; do
    echo "$k ${dict[$k]}"
done
# cell XX1234
# view layout
# a 1
# b 2
# c 3
# lib top
# q
# w
# e

无法区分 "q w e" 还是 "q", "w", "e"

标签:Shell,layout,echo,cell,XX1234,dict,key,Bash,字典
From: https://www.cnblogs.com/yeungchie/p/17487767.html

相关文章

  • linux shell根据关键字用sed注释掉整行
    一、将带有ab的行注释掉#cattest #sed-i'/ab/s/^\(.*\)$/#\1/g'testab是关键字s是语法替换^是行首$是行尾\是转义符数字1带表前述匹配内容 #cattest  二、将带有ab的行取消注释 #cattest #sed-i'/ab/s/^#\(.*\)$/\1/g'test #cattest ......
  • Windows Git Bash vim 屏幕闪烁
    据说是本来是遇到无效命令时发出的蜂鸣声,Windows用一个快速的闪烁取而代之。 修改Git安装目录下etc/vimrc文件,最后一行加入setvbt_vb= 或者在gitbash的vim中冒号模式输入setvbt_vb=......
  • 白名单rundll32加载shellcode上线metasploit(nim学习系列)
    白名单rundll32加载shellcode上线metasploit监听metasploitmsfconsole-x"useexploits/multi/handler;setlhost192.168.0.101;setlport443;setpayloadwindows/x64/meterpreter/reverse_tcp;exploit"生成shellcodemsfvenom-pwindows/x64/meterpreter/r......
  • 常见WebShell的流量特征
    常见WebShell的流量特征菜刀payload的特征:php:asp:<%evalrequest("caidao")%>asp.net:<%@PageLanguage="Jscript"%><%eval(Request.Item["caidao"],"unsafe");%>数据包流量特征:请求包中:ua头为百度请求体中有eval,base64等特征字符请求体中传......
  • Python数据类型-字典与集合
    """题目1:下面关于字典的定义正确的是:CA.d={1,}B.d={1,2:3,4}C.d={'name':'xinlan','age':18}D.d={[1,2]:[3,4],'age':18}"""#题目2:请创建一个字典用来表示你自己的个人信息。有哪些key由你自己来决定。my_info={'name':&......
  • shell 脚本学习
     shell通配符 3、通配符和正则表达式比较(1)通配符和正则表达式看起来有点像,不能混淆。可以简单的理解为通配符只有*,?,[],{}这4种,而正则表达式复杂多了。(2)*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一......
  • Linux中-bash: /dev/null: Permission denied问题解决
    云上架构2021年08月06日09:19 ·  阅读682​今天在Centos7上运行如下命令 shell复制代码######添加hdfs用户#####useraddhdfs######切换至hdfs用户#####su-hdfs报如下错误 javascript复制代码-bash:/dev/null:Permissiondenied-bash......
  • Python元组(tuple)和字典(dict)的合并使用
    Python包含6种数据类型,其中Number(数字)、String(字符串)、Tuple(元组)、 List(列表)、Dictionary(字典)、Set(集合);1.回顾Tuple(元组)的常用方法:Tuple的创建:tuple()方法创建,或者小括号的方式,有时也直接省略小括号a=tuple(range(10))b=tuple('hkd')c=tuple([1,2,3])PS:tuple()......
  • 执行shell脚本获取返回值字符串
    std::stringexecuteShellCommand(conststd::string&command){ FILE*pipe=popen(command.c_str(),"r"); if(!pipe)return"ERROR"; charbuffer[128]; std::stringresult=""; while(!feof(pipe)) { if(fgets(buffer,1......
  • shell基础1
    shell基础1什么是shellcentosubuntususe具体实现了shell的软件bashshell是一个壳(解释器,翻译官),通过c语言写的一个命令解释执行用户输入的命令或程序等用户输入一条命令,shell就解释一条键盘输入命令,linux给与响应的方式,称为交互式shell是一个包裹着操作系统核心......