Применить в одной команде 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
В надежде, что это может сделать работу.