আমার কাছে বাশ স্ক্রিপ্ট রয়েছে যা একবারে চালুর আগে কিছু পরামিতিগুলির উপর ভিত্তি করে স্ট্রিংয়ে কমান্ড-লাইন তৈরি করে। কমান্ড স্ট্রিংয়ের সাথে সংযুক্ত হওয়া যে অংশগুলি প্রতিটি উপাদানগুলির মাধ্যমে ডেটার একটি "স্ট্রিমিং" করার সুবিধার্থে পাইপগুলি দ্বারা পৃথক করা উচিত।
খুব সরল উদাহরণ:
#!/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
বর্তমান ডিরেক্টরিতে এটি বিদ্যমান তা অনুমান করা কি নিরাপদ ?