Saya memiliki skrip bash yang membangun baris perintah dalam string berdasarkan pada beberapa parameter sebelum menjalankannya dalam sekali jalan. Bagian-bagian yang digabungkan ke string perintah seharusnya dipisahkan oleh pipa untuk memfasilitasi "streaming" data melalui masing-masing komponen.
Contoh yang sangat sederhana:
#!/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
Untuk beberapa alasan, pipa-pipa itu sepertinya tidak berfungsi. Ketika saya menjalankan skrip ini saya mendapatkan pesan kesalahan yang berbeda yang biasanya berkaitan dengan bagian pertama dari perintah (sebelum pipa pertama).
Jadi pertanyaan saya adalah apakah mungkin untuk membangun perintah dengan cara ini, dan apa cara terbaik untuk melakukannya?
infile
ada di direktori saat ini?