一、定义数组
在bash中,定义数组需要使用declare命令,并指定-a选项标识数组类型,如下所示:
declare -a my_array
这样就定义了一个名为my_array的空数组。
如果需要在定义数组时给出数组元素,可以使用以下语法:
declare -a my_array=("apple" "orange" "banana")
这个定义了一个名为my_array的数组,并给出了三个元素"apple","orange" 和 "banana"。
二、添加/删除元素
可以使用+=操作符向数组中添加元素,如下例所示:
declare -a my_array=("apple" "orange" "banana") my_array+=("grape")
这将添加一个新元素"grape" 到数组my_array末尾。
如果需要删除某个数组元素,可以使用unset命令,如下所示:
declare -a my_array=("apple" "orange" "banana") unset my_array[1]
这将删除数组my_array中的第2个元素,即"orange"。注意数组下标是从0开始的。
三、访问元素
可以使用数组名和元素下标来访问数组中的元素,如下例所示:
declare -a my_array=("apple" "orange" "banana") echo ${my_array[0]}
这将输出 my_array 数组的第1个元素"apple"。
也可以通过使用 ${my_array[*]}或${my_array[@]}来访问整个数组,这将返回所有元素,但使用不同的分隔符或引用方式,如下例所示:
declare -a my_array=("apple" "orange" "banana") echo ${my_array[*]} echo ${my_array[@]}
这两个命令执行的操作相同,都会输出my_array数组的所有元素"apple","orange","banana",但是它们使用不同的分隔符和引用方式。
四、数组长度
通过使用#符号,可以获取数组的长度,如下所示:
declare -a my_array=("apple" "orange" "banana") echo ${#my_array[@]}
这将输出my_array数组元素的数量3。
五、示例代码
下面是一个使用数组的示例程序,它会读取用户输入数据,并将它们存储在名为my_array的数组中,然后输出数组元素的总数和每个元素。
#!/bin/bash declare -a my_array echo "Please enter some values (press enter to finish):" while read input; do if [[ -z "$input" ]]; then break fi my_array+=("$input") done echo "Total elements in array: ${#my_array[@]}" echo "Array elements:" for i in "${my_array[@]}"; do echo "- $i" done
运行这个程序,它会提示用户输入一些值,按回车键结束输入,然后会输出数组中元素的总数和每个元素:
Please enter some values (press enter to finish): apple orange banana Total elements in array: 3 Array elements: - apple - orange - banana