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.