在 Shell 脚本中,数组是一种非常有用的数据结构,可以用来存储多个值。与许多编程语言一样,Shell 也提供了对数组的支持,但它的语法和操作方式有所不同。C语言数组教程
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
与大部分编程语言类似,数组元素的下标由0开始。
Shell 数组用括号来表示,元素用”空格”符号分割开,语法格式如下:
一). 定义数组
在 Shell 脚本中,数组的定义方式有几种。
1.1 定义一个简单的数组
array_name=(value1 value2 ... valuen)
例如:
fruits=("apple" "banana" "cherry")
1.2 定义一个带有索引的数组
还可以单独定义数组的各个分量:
array_name[0]=value0 array_name[1]=value1 array_name[2]=value2
可以不使用连续的下标,而且下标的范围没有限制。
例如:
fruits[0]="apple" fruits[1]="banana" fruits[2]="cherry"
二)读取数组元素
可以通过数组的索引来访问数组中的元素。索引从 0 开始。读取数组元素值的一般格式是:
${array_name[index]}
例如:
echo ${fruits[1]} # 输出 "banana"
三)获取数组的所有元素
使用@ 或 * 可以获取数组中的所有元素,例如:
${array_name[*]} ${array_name[@]}
四)获取数组长度
可以通过${#array_name[@]}
${#array_name[*]}
来获取数组的长度,即数组中元素的个数。
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
五) 遍历数组
可以使用 for 循环遍历数组中的所有元素。
for element in "${array_name[@]}" do echo $element done
例子:
fruits=("apple" "banana" "cherry")
for fruit in "${fruits[@]}" do echo $fruit done
结果
apple banana cherry
六) 修改数组元素
可以通过索引直接修改数组中的某个元素。
array_name[index]=new_value
例子:
fruits[1]="orange" # 将 "banana" 修改为 "orange"
结果
apple orange cherry
七) 删除数组元素
可以使用 unset
命令删除数组中的某个元素。
unset array_name[index]
例子:
unset fruits[1] echo ${fruits[@]}
结果
apple cherry
在这个例子中,fruits[1]
被删除,数组现在只剩下 “apple” 和 “cherry”。
八) 多维数组(不直接支持)
Shell 脚本不直接支持多维数组,但可以通过定义包含数组的数组来实现类似效果。
例子:
matrix[0]="1 2 3" matrix[1]="4 5 6" matrix[2]="7 8 9" echo ${matrix[0]} # 输出 "1 2 3"
九) 关联数组(仅在 Bash 4 及以上版本支持)
关联数组允许使用字符串作为索引。
declare -A assoc_array assoc_array[key1]=value1 assoc_array[key2]=value2
例子:
declare -A colors colors[apple]="red" colors[banana]="yellow" echo ${colors[apple]} # 输出 "red"
这些输出说明了每个数组操作在 Shell 脚本中的实际效果。你可以在终端中尝试这些命令以更好地理解它们的工作原理。
qwe
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!