在Linux Shell脚本编程中,数组是一个非常关键的特性,它允许我们存储和处理一组相关的数据,而不是单一的变量。数组分为两种类型:普通数组和关联数组。
**一、数组和关联数组**
普通数组在Shell中是通过索引来管理元素的集合,这些索引通常是整数。例如,我们可以定义一个名为`array_var`的普通数组:
```bash
array_var=(1 2 3 4 5 6)
```
或者逐个添加元素:
```bash
array_var[0]="test1"
array_var[1]="test2"
array_var[2]="test3"
```
输出数组元素的方法包括:
- `${array_var[0]}`:输出索引0对应的值,即`test1`
- `${array_var[$index]}`:使用变量`index`作为索引输出对应值
- `${array_var[*]}`:输出所有数组元素,用空格分隔
- `${array_var[@]}`:同上,但不进行单词扩展
- `${#array_var[*]}`:输出元素数量
**关联数组**在Bash 4.0及更高版本中引入,其索引可以是任意字符串,这提供了更大的灵活性。定义关联数组需先声明:
```bash
declare -A ass_array
```
接着,我们可以像这样添加元素:
```bash
ass_array=(["index1"]=index1 ["index2"]=index2)
ass_array["index3"]=index3
ass_array["index4"]=index4
```
访问关联数组元素和输出索引列表的方法与普通数组类似,但不使用美元符号`$`:
```bash
echo ${ass_array["index1"]} # 输出 index1
echo ${ass_array["index4"]}
echo ${!ass_array[*]} # 输出索引列表
echo ${!ass_array[@]} # 同上,但不进行单词扩展
```
**二、操作数组**
在Shell脚本中,对数组的操作主要包括增加、删除、遍历等。增加元素可以使用索引直接赋值,如`array_var[3]="new_value"`。删除元素并不直接,通常需要重新定义数组或使用循环处理。遍历数组可以使用`for`循环:
```bash
for element in "${array_var[@]}"; do
echo "$element"
done
```
**三、使用注意事项**
- 在Ubuntu 14.04中,确保脚本以`#!/bin/bash`开头,以指示解释器使用Bash。
- 执行关联数组脚本时,需要使用`bash`命令,如`bash script.sh`。
- 使用`echo`输出数组时,避免在索引前加`$`,对于关联数组尤其如此。
数组和关联数组为Linux Shell脚本提供了处理复杂数据结构的能力,它们使得脚本可以更高效地组织和处理大量数据。无论是普通数组还是关联数组,理解和熟练使用它们都是编写高效Shell脚本的关键。