কমান্ড লাইন আর্গুমেন্ট এবং স্ট্যান্ডার্ড ইনপুট মধ্যে পার্থক্য আছে। একটি পাইপ একটি প্রক্রিয়াটির স্ট্যান্ডার্ড আউটপুটটিকে অন্যটির স্ট্যান্ডার্ড ইনপুটটিতে সংযুক্ত করে। সুতরাং
ls | echo
Ls এর স্ট্যান্ডার্ড আউটপুটটিকে ইকো-র স্ট্যান্ডার্ড ইনপুটকে সংযুক্ত করে। ঠিক আছে? ঠিক আছে, প্রতিধ্বনি স্ট্যান্ডার্ড ইনপুট উপেক্ষা করে এবং এর কমান্ড লাইন যুক্তিগুলি ডাম্প করবে - যা নিজের স্টাডাউটের ক্ষেত্রে এই নয়। আউটপুট: কিছুই না।
এক্ষেত্রে কয়েকটি সমাধান রয়েছে। একটি হ'ল কমান্ড ব্যবহার করা যা স্ট্ডিন পড়ে এবং স্টাডআউটে ডাম্পস পড়ে, যেমন বিড়ালের মতো।
ls | cat
আপনার কাজের সংজ্ঞা কী তা নির্ভর করে 'কাজ করবে'।
তবে জেনারেল কেস সম্পর্কে কী বলা যায়। আপনি যা চান তা হ'ল এক কমান্ডের স্টডআউটকে অন্যের কমান্ড লাইন আর্গগুলিতে রূপান্তর করা। অন্যরা যেমন বলেছে, xargsএই ক্ষেত্রে কি আধ্যাত্মিক সহায়ক সরঞ্জাম, তার কমান্ড লাইনটি তার স্টিডিনের আদেশের জন্য পড়তে এবং চালানোর জন্য আদেশগুলি তৈরি করা।
ls | xargs echo
সাবস্টিটিউশন কমান্ড ব্যবহার করে আপনি এটি কিছু রূপান্তর করতে পারেন could $()
echo $(ls)
আপনি যা চান তা করতে চাইবে।
এই উভয় সরঞ্জামই শেল স্ক্রিপ্টিংয়ের বেশ মূল বিষয়, আপনার উভয়ই শিখতে হবে।
সম্পূর্ণতার জন্য, যেমন আপনি প্রশ্নটিতে ইঙ্গিত করেছেন, স্টিডিনকে কমান্ড লাইন আরগগুলিতে রূপান্তর করার অন্যান্য বেস উপায়টি শেলের বিল্টিন readকমান্ড। এটি "শব্দ" ( IFSভেরিয়েবল দ্বারা সংজ্ঞায়িত শব্দগুলি ) একটি অস্থায়ী ভেরিয়েবলে রূপান্তর করে, যা আপনি যে কোনও কমান্ড রান ব্যবহার করতে পারেন।
ls | echoকরবেন? কেন কেবল চালাবেন নাls?