如何生成for循环来处理命令?



我需要运行一个名为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

但是如果我单独运行它,它可以工作。

我该如何解决这个问题?

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

你要确保双引号只包含一个参数

现在-特别是在你的情况下,配置文件的名字中永远不能有空格,你可能不应该在第一个地方使用双引号:与流行的观点相反,在任何地方都双引号不是一个好主意-在你知道你需要它的地方使用双引号,或者你不确定你是否可以验证你不需要它。太多的双引号会使阅读变得困难,并且总是会导致这类问题。

最新更新