Fork me on GitHub

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

在 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

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

posted @ 2023-05-22 23:02  橘子偏爱橙子  阅读(1336)  评论(0编辑  收藏  举报