Tengo un script bash que construye una línea de comandos en una cadena basada en algunos parámetros antes de ejecutarlo de una vez. Se supone que las partes que se concatenan en la cadena de comando están separadas por tuberías para facilitar una "transmisión" de datos a través de cada componente.
Un ejemplo muy 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 alguna razón, las tuberías no parecen funcionar. Cuando ejecuto este script, recibo diferentes mensajes de error relacionados generalmente con la primera parte del comando (antes de la primera canalización).
Entonces, mi pregunta es si es posible o no construir un comando de esta manera, y ¿cuál es la mejor manera de hacerlo?
infile
existe en el directorio actual?