创建bash脚本以自动执行分析多个文件的任务

时间:2016-07-20 13:03:26

标签: linux bash shell loops

我没有很多编写脚本的经验。

我有一个目录,其中包含许多其他文件中需要用程序分析的一组*.phylip个文件。我想自动完成这项任务。我认为循环bash shell脚本是合适的,尽管我可能是错的。

如果我要在一个.phylip文件上手动执行分析,我会在终端中使用以下命令:

./raxmlHPC-SSE3 -m GTRCAT -y -s uce-5.phylip --print-identical-sequences -p 12345 -n uce-5_result

对于bash shell脚本,我认为它接近于:

#!/bin/sh
for i in $( ls ); do
    ./raxmlHPC-SSE3 -m GTRCAT -y -s uce-5.phylip --print-identical-sequences -p 12345 -n test_5 $i
done

我知道但不知道如何修复的问题是-s选项,它指定输入的phylip文件。有关如何修改脚本以完成我需要做的任何建议吗?

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

#!/bin/bash
for i in *.phylip
do
    ./raxmlHPC-SSE3 -m GTRCAT -y -s "$i" --print-identical-sequences -p 12345 -n ${i%.phylip}_result
done

-s选项将在当前目录中传递$i,其文件名扩展名为.phylip

${i%.phylip}_result.phylip扩展名替换为_result,我想这就是您所期望的。 (参考:Parameter Substitution