আপনি কীভাবে কোনও বাক্যটি ভিতরে কমান্ড দিয়ে চালিয়ে যান


12

উদাহরণস্বরূপ, আমি আমার স্ক্রিপ্ট ফাইলে "এই মুহুর্তে অনলাইনে 10 জন লোক" বলার চেষ্টা করছি।

আমি পরের লাইনে "এই মুহুর্তে অনলাইনে লোকেরা" ছাড়া কমান্ডটি কাজ করে দেখছি না।

এই মুহূর্তে, আমি আছে

w='who | wc -l' 
echo "There are $w people online at the moment" 

যাইহোক, আমি সবসময় আউটপুট দিয়ে শেষ করি

There are who | wc -l users online at the moment 

আপনি কিভাবে কমান্ডটি মাঝখানে কাজ করবেন? আমি উদাহরণগুলি দেখার এবং অনুলিপি করার চেষ্টা করেছি, তবে এটি আমার কমান্ড প্রতিস্থাপনের সমস্যাটিতে সহায়তা করবে বলে মনে হয় না।

উত্তর:


20

আপনি এর আউটপুট চান

who | wc -l

বরাদ্দ করা হয়েছে w, সেই স্ট্রিংকে নয়, এটি আপনার চারপাশের উদ্ধৃতিগুলির কারণে আপনি পান। আপনার কমান্ড প্রতিস্থাপন ব্যবহার করা উচিত $(...):

w=$(who | wc -l)
echo "There are $w people online at the moment"

(আপনি ব্যাককোটগুলিও ব্যবহার করতে পারেন তবে আপনি সেগুলি সহজেই বাসাতে পারেন না)।


বাশ সহ কয়েকটি শেলের মধ্যে আপনি ব্যাককোটগুলি বাসাতে পারেন। এটা তোলে নেস্টেড বেরিয়ে প্রয়োজন, এ উদাহরণ দেখতে stackoverflow.com/a/2657037/776723
ShadSterling

1
@ পোলিরজিক ধন্যবাদ আমি আমার উত্তর আপডেট করেছি, তবে আমি মনে করি আমি বাসা বাঁধতে থাকব $();-)
অ্যান্থন


5

কমান্ড কার্যকর করতে আপনার ব্যাকটিক ব্যবহার করা উচিত

w=`who | wc -l` echo "There are $w people online at the moment"



7
বৈধ বিন্দু. "ব্যাকটিকটি খুব সহজেই একটি মাত্র উদ্ধৃতিতে বিভ্রান্ত হয়।" ঠিক এখানে কি ঘটেছে।
hanনিমা

@ গনিমা: আসলেই! ব্যাকটিকগুলি কেন এড়ানো উচিত তা যখন আমাদের দেখাতে হবে তখন এই প্রশ্নটি একটি দুর্দান্ত উদাহরণ। :)
প্রধানমন্ত্রী 2 রিং

ভাল, আমি কেবলমাত্র এই উত্তরটিকে অগ্রাহ্য করেছি কারণ এটিই কেবলমাত্র একটি ব্যাখ্যা করেছিল যে ওপিতে কোথায় ভুল হয়েছিল। ব্যাকটিকগুলি ভাল হোক বা মন্দ কেবল সাইড নোট।
রুসলান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.