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 脚本,实现各种数据存储和处理需求。