【问题标题】:how to pass two parameter in bash single line?如何在bash单行中传递两个参数?
【发布时间】:2016-11-27 09:37:33
【问题描述】:

假设我有一个需要两个参数的命令,比如

bismark -1 R1_1.fastq -2 R1_2.fastq

实际上,R1_1.fastq 和 R1_2.fastq 可以用

ls *fastq | paste - - 

或者可以通过

获得
echo samplelist.txt

我的问题是如何将这两个命令合并为一行?

ls *fastq | paste - - | xargs -n 2 | bismark -1 {} -2 {}

谢谢。

【问题讨论】:

    标签: bash shell xargs


    【解决方案1】:
    while read f g
    do
      bismark -1 "$f" -2 "$g"
    done < samplelist.txt
    

    或者:

    xargs -n2 sh -c 'bismark -1 "$1" -2 "$2"' . < samplelist.txt
    

    【讨论】:

      【解决方案2】:

      有了数组,就很简单了:

      a=(*fastq) ;  bismark -1 "${a[0]}" -2 "${a[1]}"
      

      【讨论】:

        【解决方案3】:

        使用 GNU Parallel,您可以:

        ls *fastq | parallel -N2 bismark -1 {1} -2 {2}
        

        【讨论】:

          猜你喜欢
          • 2014-10-09
          • 2020-08-18
          • 2020-09-04
          • 2018-02-26
          • 2019-09-10
          • 1970-01-01
          • 2015-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多