Bash 为你提供了一种自动化命令行任务的便捷方式。

使用 Bash,你可以做许多使用其他编程语言做的事情。你可以创建和使用变量、执行循环、使用条件逻辑,以及将数据存储在数组中。

虽然功能可能非常熟悉,但 Bash 的语法可能比较困难。在本文中,你将学习如何声明数组以及如何在代码中使用它们。

如何在 Bash 中声明数组

在 Bash 中声明数组很容易,但要注意语法。如果你习惯于使用其他语言进行编程,那么这些代码可能看起来很熟悉,但其中存在很容易忽略的细微差别。

要声明数组,请按照下列步骤操作:

  • 为你的数组命名
  • 在变量名称后面加上等号,等号周围不应有任何空格
  • 将数组括在括号 () 中(不像 JavaScript 中的括号 [])
  • 使用引号键入字符串,但它们之间没有逗号

数组声明将如下所示:

myArray=("cat" "dog" "mouse" "frog)

就是这么简单!

如何在 Bash 中读取数组

有几种不同的方法可以循环遍历数组。你可以遍历元素本身,也可以遍历索引。

如何遍历数组元素

你可以使用如下代码遍历数组元素:

for str in ${myArray[@]}; do
  echo $str
done

分解一下:这有点像在 JavaScript 中使用 forEach。打印数组(myArray)中的每个字符串(str)。

输出结果如下所示:

cat
dog
mouse
frog

注意:方括号中的 @ 符号表示你正在遍历数组中的所有元素。如果你忽略它而只是写 for str in ${myArray},则只会打印数组中的第一个字符串。

如何遍历数组索引

或者,你可以遍历数组的索引。这就像 JavaScript 中的 for 循环,当你希望能够访问每个元素的索引时,这非常有用。

要使用此方法,你的代码需要类似于以下内容:

for i in ${!myArray[@]}; do
  echo "element $i is ${myArray[$i]}"
done

输出结果如下所示:

element 0 is cat
element 1 is dog
element 2 is mouse
element 3 is frog

注意:myArray 变量开头的感叹号表示你正在访问数组的索引,而不是元素本身。如果你习惯使用表示否定的感叹号,这可能会造成混淆,因此请注意这一点。

另一个注意事项:Bash 通常不需要对变量使用花括号,但对数组则需要。所以你会注意到,当你引用一个数组时,你使用语法 ${myArray},但是当你引用一个字符串或数字时,你只需使用一个美元符号:$i

总结

Bash 对于创建自动化的命令行很有用。数组是一个很好的工具,你可以用它来存储多条数据。

声明和使用它们并不难,但它与其他语言不同,所以要注意避免出错。

原文:Bash Array – How to Declare an Array of Strings in a Bash Script,作者:Veronica Stork