我没有很多编写脚本的经验。
我有一个目录,其中包含许多其他文件中需要用程序分析的一组*.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文件。有关如何修改脚本以完成我需要做的任何建议吗?
答案 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)