J'ai un bash script qui construit une ligne de commande dans une chaîne basée sur certains paramètres avant de l'exécuter en une seule fois. Les parties qui sont concaténées à la chaîne de commande sont censées être séparées par des tuyaux pour faciliter un "streaming" de données à travers chaque composant.
Un exemple très simplifié :
#!/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
Pour une raison quelconque, les tuyaux ne semblent pas fonctionner. Lorsque j'exécute ce script, je reçois différents messages d'erreur concernant généralement la première partie de la commande (avant le premier tuyau).
Ma question est donc de savoir s'il est possible ou non de construire une commande de cette manière, et quelle est la meilleure façon de le faire ?