Применить в одной команде bsub фоновый амперсанд оболочки Bourne

Я хотел бы использовать фоновый амперсанд оболочки Bourne как часть ОДНОЙ команды выполнения bsub.

Обратите внимание, что я не хочу использовать файл.bash, а одну командную строку bsub для выполнения всей процедуры.

Обратите внимание, что я также не хочу разделять содержимое bsub на несколько команд bsub, которые ожидают друг друга, а вместо этого заключить в одну командную строку bsub несколько внутренних команд unix, которые ожидают друг друга с помощью фонового амперсанда оболочки Bourne.,

следующая попытка вызвала только вывод первой внутренней команды (команда 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}

1 ответ

Решение

Я не знаю bsub но я мог бы дать вам трюк, который я использую с batch, ssh и некоторые другие отличающиеся оболочки:

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

В надежде, что это может сделать работу.

Другие вопросы по тегам