এখানে বেশিরভাগ সমাধানের চেষ্টা করার পরে, আমি খুঁজে পেল সবচেয়ে সহজ জিনিসটি ছিল স্পষ্ট - একটি টেম্প ফাইল ব্যবহার করে। আপনার একাধিক লাইন আউটপুট নিয়ে আপনি কী করতে চান তা আমি নিশ্চিত নই, তবে আপনি পঠন ব্যবহার করে লাইন লাইন লেনদেন করতে পারেন। কেবলমাত্র আপনি যা করতে পারবেন না সে সম্পর্কে সহজেই এটি সমস্ত একই ভেরিয়েবলের মধ্যে লেগে থাকে তবে বেশিরভাগ ব্যবহারিক উদ্দেশ্যে এটি মোকাবেলা করা সহজ way
./myscript.sh > /tmp/foo
while read line ; do
echo 'whatever you want to do with $line'
done < /tmp/foo
এটি অনুরোধকৃত ক্রিয়াটি করতে দ্রুত হ্যাক করুন:
result=""
./myscript.sh > /tmp/foo
while read line ; do
result="$result$line\n"
done < /tmp/foo
echo -e $result
নোট করুন এটি একটি অতিরিক্ত লাইন যুক্ত করে। আপনি যদি এটিতে কাজ করেন তবে আপনি তার চারপাশে কোড করতে পারেন, আমি ঠিক খুব অলস।
সম্পাদনা: যদিও এই কেসটি পুরোপুরি ভালভাবে কাজ করে, এই বিষয়টি পড়তে থাকা লোকদের সচেতন হওয়া উচিত যে আপনি যখন সময় লুপের মধ্যে সহজেই আপনার স্টিডিনকে স্কোয়াশ করতে পারেন, সুতরাং আপনাকে এমন একটি স্ক্রিপ্ট দেবে যা একটি লাইন, ক্লিয়ার স্টিডিন এবং প্রস্থান করবে। আমার কি মনে হয় এসএস-এর মতো করবে? আমি সম্প্রতি এটি দেখেছি, অন্যান্য কোড উদাহরণগুলি এখানে: /unix/24260/reading-lines-from-a-file-with-bash-for-vs- moment
আরো এক বার! এবার আলাদা ফাইলহ্যান্ডেলের সাহায্যে (স্টিডিন, স্টাডআউট, স্ট্ডার 0-2 হয়, তাই আমরা ব্যাশে আরও 3 বা তার বেশি ব্যবহার করতে পারি)।
result=""
./test>/tmp/foo
while read line <&3; do
result="$result$line\n"
done 3</tmp/foo
echo -e $result
আপনি এমকেটেম্পও ব্যবহার করতে পারেন তবে এটি কেবলমাত্র একটি দ্রুত কোড উদাহরণ। এমকেটেম্পের ব্যবহার দেখে মনে হচ্ছে:
filenamevar=`mktemp /tmp/tempXXXXXX`
./test > $filenamevar
তারপরে $ ফাইলের নাম ব্যবহার করুন আপনার মতো কোনও ফাইলের আসল নাম। সম্ভবত এখানে ব্যাখ্যা করার দরকার নেই তবে কেউ মন্তব্য করে অভিযোগ করেছেন।