shell(5)数组
在 Shell 脚本中(特别是 Bash),数组是一种非常有用的数据结构,可以用来存储多个值。
1. 声明数组
在 Bash 中,可以通过以下方式声明一个数组:
1 | array_name=(value1 value2 value3) |
array_name
是数组的名称。- 用空格分隔的
value1 value2 value3
是数组的元素。
1 | fruits=(apple banana orange) |
1.逐个赋值
array_name[0]=xx
array_name[1]=yy
...
2.分割赋值
array_name=(
value0
value1
value2
value3
)
2. 访问数组元素
使用索引来访问数组中的元素,索引从 0
开始:
1 | echo ${fruits[0]} # 输出: apple |
3. 获取所有元素
使用 @
或 *
可以访问数组的所有元素:
1 | echo ${fruits[@]} # 输出: apple banana orange |
${fruits[@]}
和${fruits[*]}
的区别在于,@
会保留元素的独立性(适合循环),而*
会将所有元素合并为一个字符串。
4. 获取数组长度
使用 #
可以获取数组的元素个数:
1 | echo ${#fruits[@]} # 输出: 3 |
5. 遍历数组
可以用 for
循环遍历数组:
1 | for fruit in "${fruits[@]}"; do |
输出:
apple
banana
orange
6. 添加元素
可以通过指定索引或使用 +=
添加元素:
1 | fruits[3]=grape # 指定索引添加 |
7. 删除元素
使用 unset
删除指定索引的元素:
1 | unset fruits[1] # 删除索引 1 的元素 (banana) |
注意:删除后,数组的索引不会自动重新排序,可能会出现空隙。
# 数组替换
echo ${arr[@]}
${arr[@]/oldstr/newstr}
${arr[@]//oldstr/newstr}
${arr[@]//oldstr/} # 删除
8. 示例脚本
以下是一个简单的 Shell 脚本示例:
1 |
|
运行结果:
Color: red
Color: blue
Color: green
Color: yellow
Total colors: 5
All colors: red blue green yellow purple