与巴什数组打交道
作为一个程序员,你可能在构建工具时遇到过或使用过命令行,或用于编写脚本。Bash是用于编写脚本的最常见的命令行解释器之一。
你可以用bashing脚本创建变量,运行for循环,处理数组等等。然而,我们将重点讨论在bash中使用数组的工作。在bash脚本中,数组对于存储多个数据和基本数据结构来说是相当强大的。
在本教程中,我们将引导你了解什么是bash数组,bash数组和其他概念之间的区别,以及如何通过详细的例子对其进行关键操作。
让我们深入了解一下吧
什么是bash数组?
一个数组是一个具有类似数据类型的多个元素的集合。然而,这是与其他编程语言有关的。数组在Bash中是独一无二的。一个Bash数组是不同数据类型的元素的集合。Bash数组可以包含各种数据类型的值:字符串、数字等。
举例来说:
我们来定义一个数组。
my_array=(1 2 3 4 5...10)
上面的例子是一个类似数据类型的元素的集合,即*数字。*虽然这是一个数组,但不是一个bash数组。
my_array=("one" 2 3 4 "five"...10)
然而,这个例子包含了不同数据类型的元素的集合。这就是一个Bash数组。数组的大小没有限制,不需要对元素进行索引或按逻辑顺序分配。
在了解了什么是Bash数组之后,让我们来看看更多的概念以及如何使用Bash数组。
Bash数组vs.字符串
Bash对字符串的操作也有很好的支持。Bash像其他编程语言和脚本工具一样,把字符串作为一种数据类型,就像数字或整数一样。
字符串是一组以字符而不是数字形式存储的值。这组字符可以包括数字,但是它们作为字符被包含在字符串中,而不是整数。另一方面,Bash数组存储了一组不同数据类型的值,整数、字符串、单词等。
字符串的例子。
string1="Hello world", "Welcome", "12", "two"
上面的例子包含了一组字符,其中包括单词,和数字,但都以字符串的形式出现。一个数据类型!
bash字符串的例子。
my_array=("one", 2, 3, 4, "five",...10)
一个bash数组包含不同的数据类型,字符串、数字等。
Bash数组vs.列表
在Bash中,没有叫list的数据类型。Bash列表的意思很简单, 就是在一个bash循环中的文件名或项目的序列, 由一个操作符隔开。
另一方面,Bash数组是不同数据类型的元素的集合。然而,数字索引的数组通常被称为列表。
列表的例子。
list1 && list2
如何在bash中声明数组
Bash数组是根据数组的类型来声明的。有两种类型的bash数组,数字索引数组和关联数组。
数字索引数组是一个数组,其中的值是整数(数字)。要声明一个数字数组,必须首先使用declare 命令,然后指定数组的类型。一个小写的,-a ,用来指定一个数字数组。
一个数字数组可以用以下方式声明。
declare -a my_array
在上面的例子中,我们声明了一个数字数组,名称为my_array。
第二种类型的数组是**关联数组。**这种类型的数组,其值由字符串表示。就像数字数组一样,关联数组是用declare 命令来声明的,后面是数组的类型。一个大写的-A ,用来指定一个关联数组。
declare -A my_array
如何在bash数组中添加一个变量
如上所述,我们可以通过指定数组的类型来向数组中添加变量,使用它们不同的键。接下来,在添加一个新的变量之前,先初始化数组。
如下面的例子所示。
# Declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
# Initialize the array
new_array=("Fruits")
# Add a new variable
new_array[3]=("Apple")
对于索引数组,我们也可以通过使用+=操作符,将一个元素添加到数组的末端。
例子。
# Declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
# Initialize the array
new_array=(Fruits)
# Add a new variable
new_array+=(Apple)
如何引用数组元素
一个数组中的元素可以通过添加元素的索引来引用。例如,要引用下面数组中的一个元素。
# Declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
#reference element
echo ${new_array[2]}
输出。
grape
注意:一个数组的索引从0开始。
此外,你也可以通过添加* 或@ 作为索引来引用一个数组中的所有元素。
运行这些脚本来执行。
# declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
# reference all elements
echo "${new_array[@]}"
输出。
orange
pear
grape
apple
如何删除bash数组元素
使用unset 命令可以删除一个元素或整个数组。如果你只想删除一个元素,你必须指定你想删除的元素的索引。
运行下面的脚本来删除一个数组中的元素。
# declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
# remove an element
unset new_array[2]
输出。
orange
pear
apple
删除整个数组要容易得多。你所要做的就是在unset 命令中加上数组的名称。
# remove entire elements in an array
unset my_array
如何打印bash数组
echo 命令是用来打印一个数组中的一个或多个元素。如前所述,你可以使用@ 或* 命令来引用一个数组中的所有元素。将其附加到echo 命令上,就可以打印一个数组中的所有元素。
运行这些命令。
# declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
# print all elements
echo "${new_array[@]}"
输出。
orange
pear
grape
apple
但是,如果你想打印一个数组中的单个元素,请指定该元素的索引。
# Declare the array
declare -a new_array=("orange", "pear", "grape", "apple")
# print element
echo ${new_array[2]}
输出。
grape
如何将数组传递给函数
你可以使用${array[@]} 命令将一个数组传递给一个函数。该命令传递的是整个数组。但是,如果你想只传递数组中的一个元素,请用你想传递的元素的索引替换@ 命令。
让我们在一个函数中传递一个数组。
function array_echo() {
arr=("$@")
for i in "${arr[@]}"; do
echo -n "$i "
done
}
my_array=(1 2 3 4 5 )
array_echo "${my_array[@]}"
输出。
1
2
3
4
5
结论
Bash数组是一个存储多种类型数据的伟大工具。到目前为止,在本教程中,我们介绍了bash数组的基本知识,bash数组的类型,以及如何对其进行关键操作。
虽然它的语法不同,看起来很复杂,但随着不断的使用,你会熟悉这个语法。
本教程的范围只是基础知识,你可以深入了解你可以使用bash数组和其他bash操作执行的其他自动化。