Ho uno script bash che crea una riga di comando in una stringa basata su alcuni parametri prima di eseguirlo in una volta sola. Le parti concatenate alla stringa di comando dovrebbero essere separate da pipe per facilitare uno "streaming" di dati attraverso ciascun componente.
Un esempio molto semplificato:
#!/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
Per qualche ragione i tubi non sembrano funzionare. Quando eseguo questo script ricevo diversi messaggi di errore relativi in genere alla prima parte del comando (prima della prima pipe).
Quindi la mia domanda è se è possibile o meno costruire un comando in questo modo, e qual è il modo migliore per farlo?
infile
esista nella directory corrente?