首页 > 系统相关 >【linux进阶】shell之数组字典参数处理详解

【linux进阶】shell之数组字典参数处理详解

时间:2023-05-22 23:23:51浏览次数:51  
标签:shell 进阶 name dict 数组 linux array my 字典

在 Shell 脚本中,使用数组和字典(关联数组)可以方便地处理参数。以下是它们的介绍:

数组

Shell 中的数组类似于其他编程语言中的数组,它是一个用于存储多个值的变量。在 Bash 和其他类 Unix shell 中,可以使用以下语法来创建和操作数组:

1. 定义数组

定义数组需要使用 array_name=(value1 value2 ...) 的格式。例如:

bashCopy Code
my_array=(apple banana orange)

这将创建一个名为 my_array 的数组,包含三个元素:applebananaorange

2. 访问数组

要访问数组中的元素,可以使用 ${array_name[index]} 的语法,其中 index 是元素的索引(从 0 开始)。例如,要访问 my_array 数组中的第一个元素,可以这样做:

bashCopy Code
echo ${my_array[0]}

3. 获取数组长度

要获取数组的长度,可以使用 ${#array_name[@]}${#array_name[*]}。例如:

bashCopy Code
echo ${#my_array[@]} # 输出 3
echo ${#my_array[*]} # 输出 3

4. 遍历数组

要遍历数组中的所有元素,可以使用循环语句。例如,使用 for 循环:

bashCopy Code
for item in ${my_array[@]}; do
    echo $item
done

或者使用 C 风格的 for 循环:

bashCopy Code
for (( i=0; i<${#my_array[@]}; i++ )); do
    echo ${my_array[$i]}
done

字典(关联数组)

字典也是一种数组,但是每个元素都有一个键和一个值。在 Bash 和其他类 Unix shell 中,可以使用以下语法来创建和操作字典:

1. 定义字典

定义字典需要使用 declare -A dict_name 的格式,并用 dict_name[key]=value 的方式为字典添加键值对。例如:

bashCopy Code
declare -A my_dict
my_dict["name"]="Tom"
my_dict["age"]=21

这将创建一个名为 my_dict 的字典,包含两个键值对:"name"=>"Tom""age"=>21

2. 访问字典

要访问字典中的值,可以使用 ${dict_name[key]} 的语法,其中 key 是元素的键。例如,要访问 my_dict 字典中的 "name" 值,可以这样做:

bashCopy Code
echo ${my_dict["name"]}

3. 获取字典中的所有键或值

要获取字典中的所有键,可以使用 ${!dict_name[@]}。要获取字典中的所有值,可以使用 ${dict_name[@]}。例如:

bashCopy Code
echo ${!my_dict[@]} # 输出 "name age"
echo ${my_dict[@]} # 输出 "Tom 21"

4. 遍历字典

要遍历字典中的所有键值对,可以使用循环语句。例如,使用 for 循环:

bashCopy Code
for key in ${!my_dict[@]}; do
    echo "${key}: ${my_dict[$key]}"
done

或者使用 C 风格的 for 循环:

bashCopy Code
for key in "${!my_dict[@]}"; do
    echo "${key}: ${my_dict[$key]}"
done

综上所述,使用数组和字典可以方便地处理多个参数。特别是当需要处理大量参数时,这些数据结构可以提高编程效率和代码可读性。

标签:shell,进阶,name,dict,数组,linux,array,my,字典
From: https://www.cnblogs.com/xfbk/p/17422031.html

相关文章

  • linux创建线程报错资源受限
    LinuxError:11Resoucetemporarilyunavailable可能涉及到的限制:1、/proc/sys/kernel/threads-max系统允许的最大线程数2、/proc/sys/kernel/pid_max系统最大pid值3、用户资源限制ulimit-u查看当前用户的maxuserprocesses......
  • Linux Kernel最新版本 4.0 正式发布啦
    近日由GregKroah-Hartman宣布了免费开源系统Linux Kernel4.0正式稳定版发布啦!Linux内核正式进入4.0全新内核时代,LinuxKernel4.0最值得关注的特性应该就是内核补丁无需重启系统,该技术基于Ksplice实现。 基本介绍长期支持版内核针对的是嵌入式设备,嵌入式设......
  • Linux Kernel最新版本 4.0 正式发布啦
    近日由GregKroah-Hartman宣布了免费开源系统Linux Kernel4.0正式稳定版发布啦!Linux内核正式进入4.0全新内核时代,LinuxKernel4.0最值得关注的特性应该就是内核补丁无需重启系统,该技术基于Ksplice实现。 基本介绍长期支持版内核针对的是嵌入式设备,嵌入式设......
  • Linux Kernel最新版本 4.0 正式发布啦
    近日由GregKroah-Hartman宣布了免费开源系统Linux Kernel4.0正式稳定版发布啦!Linux内核正式进入4.0全新内核时代,LinuxKernel4.0最值得关注的特性应该就是内核补丁无需重启系统,该技术基于Ksplice实现。 基本介绍长期支持版内核针对的是嵌入式设备,嵌入式设......
  • Linux三剑客(grep/awk/sed)及正则表达式
    Linux给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有Windows窗口界面直观方便。其实Linux有自己的独特的法宝,称之为三剑客:grep,awk和sed。你可以用这三件法宝很方便的处理数据:查找,分段,修改。正则表达式要想对文本和数据进行操作,一定离不开正则表达式,本文首......
  • HTB ACADEMY-Linux Privilege Escalation WRITE UP
    WehavebeencontractedtoperformasecurityhardeningassessmentagainstoneoftheINLANEFREIGHTorganizations'public-facingwebservers.Theclienthasprovideduswithalowprivilegedusertoassessthesecurityoftheserver.ConnectviaSSH......
  • Shell(Linux)手册
    资料来源Shell全面掌握教程|骏马金龙基础Bash中基本数据类型只有字符串类型echo123Bash中字符串的串联操作,直接将两段数据连接在一起即可,不需要任何操作符。echo"123""456"echo123456变量a=1echo$aa="www.cnblogs.com/mugetsukun"echo$aecho${#a}#获取......
  • 你常用的linux命令有哪些?
    我:您好,我熟悉的Linux命令包括但不限于以下几个方面:文件和目录相关命令:ls、cd、mkdir、rm、cp、mv、chown、chmod等等,这些命令用于文件和目录的管理和操作。进程相关命令:ps、top、kill、nice、nohup等等,这些命令用于查看和管理系统中运行的进程。网络相关命令:ping、netstat、ifc......
  • LInux调度器
    本文结构前面4节先展开讲讲linux内核2.6.24版本的调度器实现,其中包括CFS调度器。然后对linux历史上出现过的O(1)和O(n)调度器做一个比较,看看它们的优缺点。优先级和调度策略linux中进程优先级在用户试图和内核视图两个方面有着不同表达。在用户层面,对普通进程优先级的描述通......
  • Linux安装包管理
    VMwareWorkstation网络模式使用桥接网络:相当于在物理机与虚拟机网卡之间架设了一座桥梁,从而可以通过网络主机的网卡访问外网。使用网络地址转换(NAT):让VM虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网;在物理机中对应的物理网卡是VMnet8......