У мене є скрипт 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
існує в поточному каталозі?