У меня есть скрипт bash, который строит командную строку в строке на основе некоторых параметров, прежде чем выполнять ее за один раз. Предполагается, что части, которые соединяются с командной строкой, должны быть разделены конвейерами, чтобы облегчить «поток» данных через каждый компонент.
Очень упрощенный пример:
#!/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
По некоторым причинам трубы, кажется, не работают. Когда я запускаю этот скрипт, я получаю разные сообщения об ошибках, относящиеся обычно к первой части команды (перед первым каналом).
Итак, мой вопрос: возможно ли построить команду таким образом, и как лучше это сделать?
infile
существует в текущем каталоге?