gpt4 book ai didi

bash - 使用大括号参数列表多次执行命令

转载 作者:行者123 更新时间:2023-11-29 08:52:38 26 4
gpt4 key购买 nike

当我需要使用不同的参数多次运行命令时,我使用了这种方法(没有完全理解它):

touch {a,b,c}

相当于:

touch a
touch b
touch c

我认为同样可以用下面的循环来完成:

for file in {a,b,c}; do touch $file; done

但是我偶然发现了一个不起作用的情况:

pear channel-discover {"pear.phpunit.de","pear.symfony-project.com"}

我有几个问题:

  1. 第一个示例中发生的事情的名称是什么?具体发生了什么?
  2. 对于简单的事情使用这种方法比 for-in 循环更好吗?
  3. 为什么 pear 命令不能那样工作?命令脚本应该实现一些技术来处理此类参数,还是应该由 shell 负责?

最佳答案

这叫做 Brace Expansion , 它扩展为给定字符串的空格分隔列表。

所以 touch {a,b,c} 等同于

touch a b c

虽然 touch {a,b,c}x 相当于:

touch ax bx cx

您的 pear 命令本质上将运行为:

pear channel-discover pear.phpunit.de pear.symfony-project.com

这可能不是您所期望的。如果您希望命令对每个字符串运行一次,请使用 for 循环(它回答您的第二个问题),或使用大括号扩展和 xargs 的组合。

关于bash - 使用大括号参数列表多次执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971808/

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