数组是常见基本数据结构之一。你们可以感觉数组是一个可以这其中储放好多个变量的变量。
在本文中,大伙儿将借助案例讨论Bash数组,如何有效在Bash辅助制作中运用她们。
bash数组
Bash可用一维数据索引和关联数组类型。数据信息数组运用整数金额额度引用,而关联数组运用字符串数组数组引用。索引不必是持续不断。
能够用负索引从末尾访问数据信息索引数组,负索引是-1
对最后一个元素的引用。
与绝大多数编程语言不一样,Bash数组元素不必具有相同的引用类型。你们可以创建一个此外包含字符串数组数组和数字的数组。Bash兼容问题多层次数组,并且您不能一起使用数组元素。
数组中可以储存的关键元素数没有限制。
建立Bash数组
Bash中的数组可用各种手段校准。
建立数据信息索引数组
Bash变量是无类型的,一切变量都可以在并没有声明的情况之下做为索引数组。
要显式声明数组,请选择内置的声明:
declare -a array_name
建立索引数组的一种方法采用的是以下方法:
array_name[index_1]=value_1
array_name[index_2]=value_2
array_name[index_n]=value_n
index_
是整数金额。
建立数据信息数组的另一种方式需在括号内特殊元素文件目录,并用空格符隔开:
array_name=( element_1 element_2 element_N )
当使用之上方法建立数组时,索引从零开始,即第一个元素的索引为0
。
建立关联数组
与数字索引不一样,关联数组必须首先运用clarify Builtin和-A
(大写选项声明:
declare -A array_name
要建立关联数组,请选择以下方法:
declare -A array_name
array_name[index_foo]=value_foo
array_name[index_bar]=value_bar
array_name[index_xyz]=value_xyz
index_
可以是一切字符串数组数组。
您还可以运用以下方法建立关联数组:
declare -A array_name
array_name=(
[index_foo]=value_foo
[index_bar]=value_bar
[index_xyz]=value_xyz
)
数组测算
Bash数组词法最开始极有可能看起来有些古怪,但是一旦您阅读原文中,它还会变得越来越更有意义。
引用元素
要引用独立元素,你要了解元素索引。能用以下文件类型引用一切元素:
${array_name[index]}
运用数组时,
${}
需要使用花括号来避免shell的文件名扩展运算符。
倘若无法使用花括号,
${}
则用于访问数组元素的句法结构与绝大多数编程语言的词法相近。
让我们打印出索引求的元素1
:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print element
echo ${my_array[1]}
Helium
倘若特定索引为@
或*
,则英文单词将增加为数组的全体人员。要打印所有元素,请选择:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium
@
或正中间的唯一区别*
是,${my_array[x]}
用冒号导致来。在这种情况下,*
扩展为独立英文单词,在这其中数组元素间以空格符分隔,接着@
将每个数组元素扩展为单独的英文单词。当取值数组元素时,这一点至关重要。
您还可以依据!
在数组名称之前再加上运算符来打印出数组的键:
${!array_name[index]}
例如,要打印所有键,请选择:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${!my_array[@]}"
0 1 2 3
数组长度
要想获得数组长短,请选择以下方法:
${#array_name[@]}
词法与引用所有元素以及#
数组名称前标志符时的词法一样。
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## array Length
echo ${#my_array[@]}
4
取值数组
取值数组中每一项的比较常见的方法有哪些运用for循环。
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${my_array[@]}"
do
echo "$i"
done
上面的编码将取值数组,而且在新式中打印出每一个元素:
Hydrogen
Helium
Lithium
Beryllium
打印出所有键和系数案例
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${!my_array[@]}"
do
echo "$i" "${my_array[$i]}"
done
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
取值数组的另一种方法有哪些得到数组长短并且用C样式循环:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
# Length of the array
length=${#my_array[@]}
# Array Loop
for (( i=0; i < ${length}; i ))
do
echo $i ${my_array[$i]}
done
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
添加一个新元素
要将新元素导到bash数组并特殊其索引,请选择以下方法:
my_array[index_n]="New Element"
这是一个例子:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new element
my_array[9]="Aluminum"
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium Aluminum
在没有任何特殊索引的情况之下将元素导到数组的另一种方法有哪些运用 =
运算符。您可以添加一个或多个元素:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new elements
my_array =( Cobalt Nickel )
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
删除元素
要删除独立元素,你要了解元素索引。能用以下unset
命令删除元素:
unset my_array[index]
让大家都而言一个例子:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## remove element
unset my_array[2]
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Beryllium
结论
至今为止,您应该对此如何使用bash数组有着特别好把握。已经为大家彰显了怎样创建数据信息索引和关联数组,如何取值数组,计算数组长度以及再加上和删除元素。
如果您有任何问题或意见和建议,请随时。
