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