সাধারণত, আমাদের কেবল একটি যুক্তি পাস করতে হবে:
echo abc | cat
echo abc | cat some_file -
echo abc | cat - some_file
দুটি যুক্তি পাস করার উপায় আছে? কিছুটা এইরকম
{echo abc , echo xyz} | cat
cat `echo abc` `echo xyz`
আমি প্রথমে উভয় ফলাফল প্রথমে একটি ফাইলে সঞ্চয় করতে পারি
echo abc > file1
echo xyz > file2
cat file1 file2
তবে আমি ঘটনাক্রমে কোনও ফাইল ওভাররাইট করে ফেলতে পারি, যা ঠিক নেই। এটি একটি অ-ইন্টারেক্টিভ স্ক্রিপ্টে চলেছে। মূলত, আমার cat
কাছে কোনও ফাইল না লিখে দুটি সালিশী কমান্ডের ফলাফল পাস করার একটি উপায় প্রয়োজন ।
আপডেট: দুঃখিত, উদাহরণটি সমস্যার মুখোশ দেয়। যদিও { echo abc ; echo xyz ; } | cat
কাজ বলে মনে হচ্ছে না, আউটপুট কারণে echo
গুলি না cat
।
এর চেয়ে ভাল উদাহরণ হ'ল { cut -f2 -d, file1; cut -f1 -d, file2; } | paste -d,
যা প্রত্যাশার মতো কাজ করে না।
সঙ্গে
file1:
a,b
c,d
file2:
1,2
3,4
প্রত্যাশিত আউটপুট হল:
b,1
d,3
সমাধান হয়েছে:
প্রক্রিয়া বিকল্প ব্যবহার করুন :cat <(command1) <(command2)
বিকল্পভাবে, নামযুক্ত পাইপগুলি ব্যবহার করে তৈরি করুন mkfifo
:
mkfifo temp1
mkfifo temp2
command1 > temp1 &
command2 > temp2 &
cat temp1 temp2
কম মার্জিত এবং আরও ভার্বোজ, তবে যতক্ষণ না আপনি টেম্প 1 এবং টেম্প 2 এর আগে হাতের অস্তিত্ব নেই তা নিশ্চিত করেন না works