gpt4 book ai didi

Bash - 为什么循环中的这两个命令连续运行而不是并行运行?

转载 作者:行者123 更新时间:2023-11-29 09:23:37 25 4
gpt4 key购买 nike

我正在尝试学习一些 bash,但我无法弄清楚以下行为。我有一个 for 循环,看起来一个命令在另一个命令开始之前运行了整个循环,即使它们在相同的 dodone 结构中。看我的例子:

这是 shell 脚本:

for i in "$(ls .)"
do
printf "$i\n"
printf "$i\n"
done

如果这是在包含文件 abc 的目录中运行,我希望输出为:

a
a
b
b
c
c

相反,它是:

a
b
c
a
b
c

谁能给我解释一下这是怎么回事?

最佳答案

因为在将表达式传递给循环之前,您要扩展 $(ls .) 中的表达式,所以它首先评估目录中的所有文件,然后打印它两次。本质上,您的循环只包含一个您打印两次的元素。

你想要的行为可以通过使用 glob * 运算符来获得:

for i in *
do
printf "$i\n"
printf "$i\n"
done

这样 * 表示要迭代的列表而不是已经计算过的字符串。

关于Bash - 为什么循环中的这两个命令连续运行而不是并行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29154149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com