Mam skrypt bash, który buduje wiersz polecenia w ciągu opartym na niektórych parametrach przed wykonaniem go za jednym razem. Części, które są powiązane z ciągiem poleceń, powinny być oddzielone potokami, aby ułatwić „strumieniowanie” danych przez każdy komponent.
Bardzo uproszczony przykład:
#!/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
Z jakiegoś powodu rury nie działają. Kiedy uruchamiam ten skrypt, otrzymuję różne komunikaty o błędach dotyczące zazwyczaj pierwszej części polecenia (przed pierwszym potokiem).
Moje pytanie brzmi więc, czy możliwe jest zbudowanie polecenia w ten sposób i jaki jest najlepszy sposób, aby to zrobić?
infile
istnieje w bieżącym katalogu?