मेरे पास एक बैश स्क्रिप्ट है जो एक बार में निष्पादित करने से पहले कुछ मापदंडों के आधार पर एक स्ट्रिंग में कमांड-लाइन बनाती है। प्रत्येक स्ट्रिंग को डेटा के "स्ट्रीमिंग" को सुविधाजनक बनाने के लिए कमांड स्ट्रिंग को जो भाग समवर्ती होते हैं, उन्हें पाइप द्वारा अलग किया जाना चाहिए।
एक बहुत ही सरल उदाहरण:
#!/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
वर्तमान निर्देशिका में मौजूद है?