如何在Bash脚本中声明一个字符串的数组

149 阅读2分钟

Bash脚本为你提供了一种方便的方法来实现命令行任务的自动化。

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

虽然这些功能可能非常熟悉,但Bash的语法可能很复杂。在这篇文章中,你将学习如何声明数组,然后如何在你的代码中使用它们。

如何在Bash中声明一个数组

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

要声明你的数组,请遵循以下步骤:

  1. 给你的数组起个名字
  2. 在该变量名称后面加上一个等号。等号周围不应该有任何空格。
  3. 小括号 括住数组(而不是像JavaScript中的括号)。
  4. 用引号键入你的字符串,但中间不要有逗号

你的数组声明将看起来像这样:

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脚本对于创建自动化的命令行行为非常有用,而数组是一个伟大的工具,你可以用它来存储多个数据。

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