我想将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,但是我可以给你一个与batchssh和其他一些不同的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/

10-10 01:55