Bash 脚本 for 数组虚拟问题中的循环

Bash 脚本 for 数组虚拟问题中的循环

我有一个非常愚蠢的问题,但我只是想确认一下。我也使用以下代码对其进行了内部测试。

for x in ${!test_array[@]} 
do
    echo hey
done

所以我的问题是,显然,for如果数组为空,循环将简单地忽略“doing”和“done”之间的任何内容。我已经测试过它,如果数组为空,则echo hey永远不会运行,这意味着脚本永远不会在do ..和内做任何事情done。如果数组至少有一个元素,那么它将运行echo hey

我只是想确认一下我的理解是否正确。我的意思是,从我的测试看来,确实是这样。

答案1

你的理解是正确的。 for 循环将执行do和之间的代码done 为了中的每一项。如果里面没有任何物品那么就没有什么可以循环的了。

但是如果你省略用言语来说总的来说,它将循环遍历位置参数。

例如

$ set -- one two
$ for f; do echo $f; done
one
two

3.2.5.1 循环结构

答案2

对,那是正确的。这样想:如果你在一个儿童聚会上,我告诉你每个穿蓝色衬衫的孩子都应该得到一块饼干,那么如果没有孩子穿蓝色衬衫,你就永远不会打开饼干罐。

在这里,您告诉 shell 对数组的每个元素执行某些操作,并且由于没有元素,因此它甚至不会进入循环。

相关内容