如何解决将输出重定向到提要作为命令行的输入?
| 我想在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。