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

Java 将输出重定向到提要作为命令行的输入?,java,perl,bash,syntax,redirect,Java,Perl,Bash,Syntax,Redirect,我想在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 是参数和参数之一 samtools view -b -u -q 1 $t_b | samtools pileup -f $r

我想在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
是参数和参数之一

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

输出变成了躯体的输入。

可能不是答案,因为我不理解这个问题:

我会用

(samtools视图-b-u-Q1$n|b | samtools堆积-f$r-\ samtools视图-b-u-q 1$t|b | samtools堆积-f$r-)\
|java-jarvarscan.v2.2.jar输出
[EDIT]我想我现在明白你的问题了,如果我错了,请纠正我

让我们从最简单的示例开始,该示例具有与您的示例相同数量的不同命令行。假设您有三个程序,“体细胞”、“samtools1”和“samtools2”。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`
虽然“和”之间可能存在一些相互作用,但这需要一些括号或引号。我还没试过运行这个

[留给审计的旧东西]

您的问题对我来说并不完全清楚:您是否清楚您是想重定向输出还是制定一个命令行?我猜你指的是后者,因为你说的是两个参数,只有一个标准输入

如果要从命令的输出公式化命令行参数,则要使用的bash语法是反引号“`”

例如,要运行一个命令'mycommand',该命令预期一个日期作为其命令行argumemt,您可以使用

mycommand `date`

它将运行date命令,并使用该命令的输出作为mycommand的第一个参数。

我的问题的解决方案位于:


$n_p和$t_p是可执行命令。因此,最后我们得到一个命令:java-jar VarScan.v2.2.jar,但是$n_p和$t_p是VarScan的体细胞功能的输入参数:嘿,彼得……谢谢你的评论……非常感谢。我已经更新了我的问题,所以现在更清楚了…thanskI删除了我的答案,因为我不知道体细胞VarScan。谢谢你的回答…好的,我试着重新表述我的问题。你现在能理解吗…不确定,这是否有帮助?好的…这是软件的链接…谢谢…Burleigh Bear。。!我会试试你的建议。非常感谢你的帮助。。
mycommand `date`