As 3 linhas que você escreveu para demonstrar o que você quer são um script bash
válido: um script nada mais é do que uma seqüência de comandos executados um após o outro por um shell.
O único código adicional que você pode desejar seria algo para limpar os arquivos temporários produzidos por script1.pl
e script2.pl
. Além disso, talvez você queira usar caminhos absolutos para especificar onde script{1,2,3}.pl
ao vivo.
#!/bin/sh
trap 'rm outputs1 outputs2' EXIT
perl script1.pl --i "$1"
perl script2.pl --i outputs1
perl script3.pl --i outputs2
$1
representa o valor do primeiro argumento passado para o script, por isso seria chamado com
execute.sh input1.tsv
conforme desejado.
Você não pode realmente configurar canais entre os três scripts, porque eles parecem estar codificados para produzir arquivos de saída específicos.