Bash中数组的操作教程
什么是数组
数组是一种存储多个值的数据结构。在 Bash 中,数组可以包含一个或多个元素,并且每个元素可以是整数、字符串或者其他 Bash 数据类型。
数组的定义
在 Bash 中,定义数组需要使用 declare
或者 declare -a
语句。下面是一个简单的数组定义示例:
declare -a my_array=(apple banana cherry)
在上面的代码中,我们定义了一个名为 my_array
的数组,其包含了三个元素:apple
、banana
和 cherry
。
当数组成员是数字时,可以不加双引号:
declare -a num_array=(1 2 3 4 5)
数组的访问
Bash 中通过 ${array[index]}
的方式访问数组元素:
echo ${my_array[0]} # 输出 apple
注意,Bash 中数组下标从 0
开始。
数组的遍历
遍历值
可以使用 for
循环遍历数组中的值:
for item in "${my_array[@]}"
do
echo $item
done
以上代码会输出数组中的每个元素。
遍历下标
使用 !
符号和数组的名字可以遍历数组下标:
for index in "${!my_array[@]}"
do
echo $index
done
以上代码会输出数组中每个元素的下标。
数组的拼接
可以使用 +=
操作符将多个数组拼接在一起:
declare -a array1=(apple banana)
declare -a array2=(cherry orange)
combined=("${array1[@]}" "${array2[@]}")
echo ${combined[@]} # 输出 apple banana cherry orange
数组的切片
Bash 支持通过下标截取数组的子集:
declare -a my_array=(apple banana cherry orange pear)
echo ${my_array[@]:2:3} # 输出 cherry orange pear
上面的代码截取了从索引 2
开始,长度为 3
的子数组。
数组的删除
可以使用 unset 命令删除数组中的元素:
declare -a my_array=(apple banana cherry)
unset my_array[1]
echo ${my_array[@]} # 输出 apple cherry
上面的代码会删除 my_array
中索引 1 的元素,并输出修改后的数组。
示例
示例1:统计字母出现次数
#!/bin/bash
# 统计字符串中字母出现的次数
test_str="hello world"
declare -a count
for ((i=0; i<${#test_str}; i++)); do
index=${test_str:$i:1}
count[$index]=$((${count[$index]}+1))
done
for index in "${!count[@]}"; do
printf '%s -> %d\n' "$index" "${count[index]}"
done
以上代码会输出:
-> 1
d -> 1
e -> 1
h -> 1
l -> 3
o -> 2
r -> 1
w -> 1
示例2:获取 Git 分支列表
branches=($(git branch -r | awk -F / '{print $2}'))
for branch in "${branches[@]}"; do
echo $branch
done
以上代码会列出所有 git 远端分支的名称。
总结
本文介绍了 Bash 数组的基础操作,包括定义、访问、遍历、拼接、切片和删除等。这些技能可以帮助你更好地使用 Bash 脚本处理各种数据结构。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Bash中数组的操作教程 - Python技术站