shell中对数组的操作汇总
| 方法 | 用例 | 备注 |
|---|---|---|
| 创建数组 | ```bash | |
| arr=(val_1 val_2 val_3) |
| 创建空数组 | ```bash
arr_new=()
``` | |
| 访问数组 | ```bash
arr=(val_1 val_2 val_3)
echo "${arr[0]}"
``` | 数组的索引从“0”开始,在这个例子中,脚本会输出“val_1”。 |
| 访问数组的长度 | ```bash
arr=(val_1 val_2 val_3)
echo "${#arr[@]}"
``` | 在这个例子中,脚本会输出“3”。 |
| 遍历数组 | ```bash
arr=(val_1 val_2 val_3)
for item in "${arr[@]}"; do
echo "$item"
done
``` | 在这个例子中,脚本会依次输出:val_1 val_2 val_3 |
| 添加元素 | ```bash
arr=(val_1 val_2 val_3)
arr[4]="val_4"
``` | 通过索引在指定位置定义。 |
| 追加元素 | ```bash
arr=(val_1 val_2 val_3)
arr+=("val_4")
``` | 相当于拼接了一个单元素的数组。 |
| 删除数组元素与数组 | ```bash
arr=(val_1 val_2 val_3)
unset arr[1]
unset arr
``` | 通过索引删除数组元素,不需要$符号。 |
| 数组切片 | ```bash
arr=(val_1 val_2 val_3)
echo "${arr[@]:1:1}"
``` | 类似字符串切片,在这个例子中,脚本会输出“val_2” |
| 拼接数组 | ```bash
arr=(val_1 val_2 val_3)
arr_2=(val_4 val_5 val_6)
arr_3=(val_7 val_8 val_9)
arr+=("${arr_2[@]}""${arr_3[@]}")
``` | |
| 使用字符串索引 | ```bash
declare -A arr=(
[key_1]=val_1
[key_2]=val_2
[key_3]=val_3
)
``` | 数组间的元素以空格分割。 |
| 使用数组作为函数的实参 | ```bash
# 在函数中使用数组作为参数
function print_array {
local arr=("$@") # 将参数转换为数组
for item in "${arr[@]}"; do
echo "$item"
done
}
# 调用函数并传递数组作为参数
array=("apple" "banana" "orange")
print_array "${array[@]}"
``` | 在函数外,将数组分割为多个参数;在函数内,再将若干参数组合成一个数组,总之是种闲得蛋疼的实现方式。 |
如果有遗漏的地方,还请在评论区指出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 之于言者!
