A solução simples e frágil
Vamos escrever um script simples chamado hailmary.sh
#!/bin/bash
#The first line should always be just as it is above
#This script is called hailmary.sh
#because we run this script and we need to pray
#that all four commands will run correctly
#If one of them fail, you may not get the results
tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf ./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./C1_R3_thout/accepted_hits.bam ./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bam
- Copie e cole todas as linhas acima, incluindo as linhas que começam com "#" no gedit e salve como hailmary.sh.
-
No Nautilus, clique com o botão direito no arquivo que você acabou de criar e selecione %código%. Vá para a guia
Properties
e coloque uma marca de seleção ao lado Permitir executar o arquivo como programa .Como alternativa, em um terminal, digite:
chmod + x hailmary.sh
-
Para executar o script em um terminal, digite:
./hailmary.sh
O Permissions
antes do nome é necessário e assume que o arquivo está no local atual do diretório. Se você colocar o arquivo em uma pasta que esteja no caminho, como ./
, não precisará do /home/<userid>/bin
. Se você colocar em outro lugar, precisará escrever o caminho inteiro, como:
/home/<userid>/myspecialfolder/hailmary.sh
Note que os quatro comandos e seus argumentos estão em quatro linhas separadas. Se você quiser colocá-los em uma única linha, você deve separá-los por ./
ou &&
. Não há necessidade de ;
se estiverem em linhas separadas.
Em qualquer um desses casos, o segundo comando não será iniciado até que o primeiro seja concluído (ou falhe!).
O problema com essa abordagem é que ela não verifica se o primeiro comando foi executado com êxito antes de executar o segundo, e assim por diante. Portanto, se ;
falhar por algum motivo, o script continuará com a sequência de cufflink, cuffmerge e cuffdiff. É por isso que eu chamo esse script de tophat
.
Fonte: link
Script com verificação de saída de tophat
#!/bin/bash
#The first line should always be just as it is above
#This script is called hailmary2.sh
#This script runs tophat
#then checks for the existance of the output file
#If the output is found, it runs the rest
tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
if [[ -f "./C1_R1_thout/accepted_hits.bam" ]]; then
echo "tophat finished. Proceeding with the rest"
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf ./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./#C1_R3_thout/accepted_hits.bam ./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bamfi
else echo "tophat did not complete"
fi
Espero que isso ajude até que alguém forneça uma resposta mais elegante.