我对脚本没有太多经验。
我有一个目录,其中包含一组需要用程序分析的*.phylip文件。我想自动化这个任务。我认为一个loop 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文件。对如何修改脚本来完成我需要的工作有什么建议吗?

最佳答案

请尝试以下代码:

#!/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

10-08 17:09