Shell 字符串
Shell 运算符 

Shell 数组

在 Shell 脚本中,数组是一种用于存储多个值的数据结构。Shell 支持索引数组和关联数组两种类型。


索引数组

索引数组是 Shell 中最常用的数组类型,使用整数索引从0开始访问数组元素。


定义数组

# 直接赋值定义数组
arr=("apple" "banana" "cherry")
# 逐个赋值定义数组
arr[0]="apple"
arr[1]="banana"
arr[2]="cherry"


访问数组元素

echo "${arr[0]}"  # 输出第一个元素 apple
echo "${arr[1]}"  # 输出第二个元素 banana
echo "${arr[@]}"  # 输出所有元素,@ 表示整个数组
echo "${#arr[@]}" # 输出数组长度


数组长度

使用 ${#arr[@]} 获取数组的长度:

echo "Array length: ${#arr[@]}"


数组追加元素

可以使用括号扩展和+=操作符来追加元素到数组末尾:

arr+=( "orange" )


删除数组元素

使用 unset 命令删除数组中的元素:

unset arr[1]  # 删除索引为 1 的元素


关联数组

关联数组也称为哈希表或者字典,使用字符串索引来访问数组元素。


定义关联数组

declare -A fruits
fruits=([apple]="red" [banana]="yellow" [cherry]="red")


访问关联数组元素

echo "${fruits[apple]}"    # 输出 red
echo "${fruits[banana]}"   # 输出 yellow
echo "${fruits[@]}"        # 输出所有元素
echo "${!fruits[@]}"       # 输出所有索引
echo "${#fruits[@]}"       # 输出数组长度


添加和删除元素

fruits[orange]="orange"    # 添加元素
unset fruits[banana]       # 删除元素


示例

下面是一个示例,展示了如何定义、访问和操作索引数组和关联数组:

#!/bin/bash
# 索引数组
arr=("apple" "banana" "cherry")
echo "Array elements:"
echo "${arr[@]}"          # 输出所有元素
echo "Length of array: ${#arr[@]}"  # 输出数组长度
echo "Second element: ${arr[1]}"    # 输出第二个元素
# 添加元素
arr+=( "orange" )
echo "Array after appending:"
echo "${arr[@]}"
# 删除元素
unset arr[1]
echo "Array after deleting second element:"
echo "${arr[@]}"
# 关联数组
declare -A fruits
fruits=([apple]="red" [banana]="yellow" [cherry]="red")
echo "Fruits dictionary:"
echo "${fruits[@]}"       # 输出所有值
echo "Color of banana: ${fruits[banana]}"  # 输出 banana 的颜色
# 添加和删除元素
fruits[orange]="orange"
unset fruits[cherry]
echo "Fruits after adding orange and deleting cherry:"
echo "${fruits[@]}"
# 遍历关联数组
echo "Keys in fruits dictionary:"
for key in "${!fruits[@]}"; do
    echo "$key -> ${fruits[$key]}"
done


以上示例展示了如何定义、访问和操作索引数组和关联数组,这些技术可以用于编写更复杂的 Shell 脚本,实现各种数据存储和处理需求。