将输出重定向到提要作为命令行的输入?

问题描述

| 我想在bash脚本中运行以下代码
java -jar VarScan.v2.2.jar somatic < samtools view -b -u -q 1 $n_b \\
| samtools pileup -f $r - < samtools view -b -u -q 1 $t_b \\
| samtools pileup -f $r - output
其中$ n_b和$ t_b是文件。 Java躯体函数需要2个参数。所以
samtools view -b -u -q 1 $n_b | samtools pileup -f $r
是参数之一,
samtools view -b -u -q 1 $t_b | samtools pileup -f $r
是另一个参数。这两个参数本身都是可执行的。 所以我想要的是
samtools view -b -u -q 1 $n_b | samtools pileup -f $r -
然后先执行
samtools view -b -u -q 1 $t_b | samtools pileup -f $r
输出成为体细胞的输入。     

解决方法

        [编辑]我想我现在已经理解了您的问题,如果我错了,请纠正我。 让我们从最简单的示例开始,该示例具有与示例相同数量的不同命令行。假设您有三个程序,即'somatic \',\'samtools1 \'和\'samtools2 \'。体细胞接受两个参数,而samtools1和samtools2不接受。 让我们进一步想象一下,当运行samtools1时,它会产生一个单词''output1 \'。同样,让我们​​想象一下,当运行samtools2时,它会产生一个单词''output2 \'。然后,您想运行命令
somatic output1 output2
作为命令行。 实现这一目标的方法是
somatic `samtools1` `samtools2`
不涉及重定向。 或详细地讲,使用您的原始示例,例如
java -jar VarScan.v2.2.jar somatic `samtools view -b -u -q 1 $n_b | samtools pileup -f $r -` `samtools view -b -u -q 1 $t_b | samtools pileup -f $r - output`
尽管`和|之间可能存在一些相互作用。需要一些括号或引号。我实际上并没有尝试运行它。 [旧材料留给审核] 您的问题对我来说还不是很清楚:您是否想重定向输出还是编写命令行?我怀疑您是说后者,因为您谈论的是两个参数,并且只有1个标准输入。 如果要从命令输出中制定命令行参数,则要使用的bash语法为反引号\'`\' 例如,要运行以日期作为其命令行参数argumemt的命令\'mycommand \',可以使用
mycommand `date`
它将运行date命令,并将命令的输出用作mycommand的第一个参数。     ,        可能不是答案,因为我对这个问题缺乏理解: 我会用 (samtools视图-b -u -q 1 $ n_b | samtools stackup -f $ r-; \\      samtools视图-b -u -q 1 $ t_b | samtools堆积-f $ r-)\\     | java -jar VarScan.v2.2.jar躯体输出     ,        我的问题的解决方案位于: https://gist.github.com/1022747     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...