bash – 如何在命令行参数给出的一系列数字上使用gnu parallel
发布时间:2020-12-15 21:23:39 所属栏目:安全 来源:网络整理
导读:我正在尝试将gnu与一些基本的生物信息学工具并行使用,例如: LASTZ.所以说我有10个seqs,我想在所有这些上使用lastz,我使用: parallel --dryrun lastz 'pathToFile/seq{}.fa query.fasta --format=text LASTZ_results_seq{}' ::: {1..10} 哪个工作正常并返回
我正在尝试将gnu与一些基本的生物信息学工具并行使用,例如: LASTZ.所以说我有10个seqs,我想在所有这些上使用lastz,我使用:
parallel --dryrun lastz 'pathToFile/seq{}.fa query.fasta --format=text > LASTZ_results_seq{}' ::: {1..10} 哪个工作正常并返回: lastz pathToFile/seq1.fa query.fasta --format=text > LASTZ_results_seq1 lastz pathToFile/seq2.fa query.fasta --format=text > LASTZ_results_seq2 lastz pathToFile/seq3.fa query.fasta --format=text > LASTZ_results_seq3 ... lastz pathToFile/seq10.fa query.fasta --format=text > LASTZ_results_seq10 但理想情况下,我希望这一步是bash脚本的一部分,它需要三个命令行参数,所以seqs的数量(例如1到10)在命令行中给出($2 = startValue,$3 = endValue值).我认为改变它可以工作: parallel --dryrun lastz 'pathToFile/seq{}.fa query.fasta --format=text > LASTZ_results_seq{}' ::: {"$2".."$3"} 但相反,返回 lastz pathToFile//seq{1..10} query.fasta --format=text > LASTZ_results_seq{1..10} 谁能告诉我这里我做错了什么?看起来它将2美元解释为1,将3美元解释为10,但后来却没有将其视为一系列数字…… 解决方法
这不是你要求的,但它可能是一个更好的解决方案:
parallel --dryrun lastz {} query.fasta --format=text '>' LASTZ_results_{/.} ::: pathToFile/seq*.fa 如果你得到Argument列表太长,试试: printf '%sn' pathToFile/seq*.fa | parallel --dryrun lastz {} query.fasta --format=text '>' LASTZ_results_{/.} 这样你就不需要提前知道有多少seq * .fa. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |