【问题标题】:How to generate a for loop to cat a command?如何生成一个 for 循环来捕获命令?
【发布时间】:2022-07-12 00:34:42
【问题描述】:

我需要运行一个名为 Bppancestor 的程序,为此你使用:

bppancestor param="configuration_file"

我需要根据目录中的所有 .conf 文件运行程序,我认为 for 循环可能会有所帮助。

我尝试了以下方法:

for f in *.conf; do "bppancestor param=$f"; done


我认为这会起作用,但结果是:

bppancestor param=sim99_scaled_tree_4.924.nwk_alpha1.23061333143822.conf: command not found

但如果我单独运行它,它会起作用。

我该如何解决这个问题?

【问题讨论】:

  • for f in *.conf; do bppancestor "param=$f"; done
  • 正如所写,它认为整个字符串应该是一个命令,而不仅仅是第一个单词。

标签: bash bpp


【解决方案1】:

双引号导致 Bash 将它们之间的所有内容都理解为一个参数 - 您可能没有名为“bppancestor param=file.conf”的命令。

您要确保双引号仅包含应被视为一个参数的一件事。

现在 - 特别是对于 conf 文件的名称中永远不能有空格的情况,您可能一开始就不应该使用双引号:与普遍的看法相反,总是双引号并不是一个好主意到处 - 在你知道你需要它的地方使用双引号,或者你不确定你是否可以验证你不需要它。过多的双引号使阅读变得困难,并一直导致此类问题。

...我可能会因为这个不受欢迎的意见而被否决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    相关资源
    最近更新 更多