Eu tenho um script bash que cria uma linha de comando em uma seqüência de caracteres com base em alguns parâmetros antes de executá-lo de uma só vez. As partes que são concatenadas para a cadeia de comandos devem ser separadas por pipes para facilitar um "fluxo" de dados através de cada componente.
Um exemplo muito simplificado:
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
Por alguma razão, os canos não parecem funcionar. Quando executo esse script, recebo diferentes mensagens de erro relacionadas geralmente à primeira parte do comando (antes do primeiro canal).
Portanto, minha pergunta é se é possível ou não criar um comando dessa maneira, e qual é a melhor maneira de fazê-lo?
infile
exista no diretório atual?