为什么大括号扩展在这条鱼 (shell) 案例中不像循环那样工作?

Why does brace expansion not work like a loop in this fish (shell) case?

我希望这些命令的行为相同:

# 1
python3 scripts/{01,02}*.py

# 2
for script in scripts/{01,02}*.py; python3 $script; end

#1 returns 单行 if 运行 和 echo 而不是 #2 returns 两个让我相信这是有区别的。第二个版本有效,第一个版本仅 运行 第一个脚本。

这是为什么?

我不熟悉 fish 但乍一看,在第一种情况下,您是 运行 一个 python 解释器实例,将脚本作为第一个参数传递给执行并作为第二个参数(传递给第一个脚本的第一个参数,它可能会忽略)第二个脚本的名称。

在第二种情况下,您是 运行 两个 python 解释器的实例,每个实例都有要执行的脚本的名称。

结果不同也就不足为奇了。