我想将Bourne shell 背景与符号用作ONE bsub执行命令的一部分。
请注意,我不想使用.bash文件,而是要使用一个bsub命令行来执行整个过程。
请注意,我也不想将我的bsub内容拆分为几个彼此等待的bsub命令,而是将一些内部的Unix命令使用Bourne shell背景“&”符号彼此包裹在一起,包装到一个bsub命令行中。
以下尝试仅产生第一个内部命令(liftOver命令)的输出,但没有执行sort或mv。
bsub -q medium -J $i "liftOver $i mm10ToMm9.over.chain.gz ${i/.bed/.mm9.bed} ${i/.bed/.unlifted_to_mm9.bed} & sort -k1,1 -k2,2n ${i/.bed/.mm9.bed} > ${i/.bed/.mm9.bed}.srt & mv ${i/.bed/.mm9.bed}.srt ${i/.bed/.mm9.bed}"
在bsub之外,此过程可以编写如下:
liftOver $i mm10ToMm9.over.chain.gz ${i/.bed/.mm9.bed} ${i/.bed/.unlifted_to_mm9.bed} &
sort -k1,1 -k2,2n ${i/.bed/.mm9.bed} > ${i/.bed/.mm9.bed}.srt &
mv ${i/.bed/.mm9.bed}.srt ${i/.bed/.mm9.bed}
最佳答案
我不知道bsub
,但是我可以给你一个与batch
,ssh
和其他一些不同的shell一起使用的技巧:
bsub -q medium -J $i <<<"liftOver $i mm10ToMm9.over.chain.gz ${i/.be/.mm9.bed} ${i/.bed/.unlifted_to_mm9.bed} &&
sort -k1,1 -k2,2n ${i/.bed/.mm9.bed} > ${i/.bed/.mm9.bed}.srt &&
mv ${i/.bed/.mm9.bed}.srt ${i/.bed/.mm9.bed}"
如果必须使用
"
开发'
,则可能必须将双引号($i
)更改为引号(bsub
)(再次,我不知道此产品)要么
bsub -q medium -J $i <<-eocmd
liftOver $i mm10ToMm9.over.chain.gz ${i/.be/.mm9.bed} \
${i/.bed/.unlifted_to_mm9.bed} &&
sort -k1,1 -k2,2n ${i/.bed/.mm9.bed} > ${i/.bed/.mm9.bed}.srt &&
mv ${i/.bed/.mm9.bed}.srt ${i/.bed/.mm9.bed}
eocmd
(警告:单词
$'\t'
之前只能放置一个制表eocmd
)同样,如果必须由
$
开发$i
,则可能必须转义bsub
符号。为了解决未设置的
$TERM
环境,我有时会使用:bsub -q medium -J $i /bin/bash <<-eocmd
...
eocmd
希望这可以完成这项工作。
关于linux - 在单个bsub命令中应用Bourne shell 背景“&”号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35570948/