1

我有一个脚本使用 GNU Parallel 多次调用另一个脚本。这是我的并行化代码的重要部分:

export PTH_data={my input path}
export WDIR={my output path}
export idsuffix=\.'[1-2]'
export R1=${idsuffix/\[1-2\]/1}
export R2=${idsuffix/\[1-2\]/2}
export raw_extns='.fastq.gz'

## IDs is a txt file with one column containing the sample names.
inputFile=$(cat $PTH_data/IDs.txt | awk '{ print $1 }')

parallel "./bin/scr/MOTHUR_run.sh {1} > logs/parallel_{1}.log" ::: $inputFile 

这里调用了 MOTHUR_run.sh 脚本:

#!/bin/bash

echo -e "MOTHUR pipeline for 16S analysis.
Analyzing sample "$(awk '/'$1'/{ print NR; }' $PTH_data/TotalIDs.txt)" of "$(< $PTH_data/TotalIDs.txt wc -l)".
Input files (FW & RV): 
- $1$R1$raw_extns 
- $1$R2$raw_extns"

echo -e "\n>>> TRIMMING ACTIVATED\n"
module load jdk/8u181
java -jar ./Trimmomatic-0.36/trimmomatic-0.36.jar PE -phred33 $WDIR/$1$R1.fastq $WDIR/$1$R2.fastq \
$WDIR/$1$R1'_paired.fastq' $WDIR/$1$R1'_unpaired.fastq.gz' $WDIR/$1$R2'_paired.fastq' $WDIR/$1$R2'_unpaired.fastq.gz' \
LEADING:3 TRAILING:3 SLIDINGWINDOW:20:30 MINLEN:220
ffile="$WDIR/"$1$R1"_paired"
rfile="$WDIR/"$1$R2"_paired"
module unload jdk/8u181
echo -e "\n>>> TRIMMING FINISHED\n"

module load intel/2018.5.274 mothur/1.40.5 vsearch/2.9.1

mothur "#summary.seqs(fasta=$(echo $ffile.trim.contigs.fasta))"

(And more code...)

我想以相同的执行顺序将修剪屏幕输出包含在并行日志文件中。echo 部分工作正常,mothur 命令还自动将它们的屏幕输出包含在日志文件中。

有任何想法吗?

4

0 回答 0