加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读