ক) কমান্ড 1 এর আউটপুট ক্যাচ করা যায়
output=$(diff "helloworld$x.out" "output/helloworld$x.out")
বা ব্যাকটিকস সহ, তবে সেগুলি নিরুৎসাহিত করা হয়েছে, কারণ আপনি তাদের বাসা বাঁধতে পারবেন না এবং ফন্টের উপর নির্ভর করে এস্ট্রোফের থেকে আলাদা করা তাদের পক্ষে কঠিন হতে পারে:
output=`cmd1`
খ) কোনও ফাইলে লেখার পরিবর্তে এবং সেই ফাইলটি পড়ার পরিবর্তে (বা আউটপুটটি ধরে ফেলতে এবং তারপরে এটি প্রতিধ্বনি করা) আপনি সরাসরি একটি পাইপ ব্যবহার করবেন:
cmd1 > file
cat file | cmd2
output=$(cmd1)
echo "${output}" | cmd2
=>
cmd1 | cmd2
তবে আপনার উদাহরণে আপনি আউটপুটটিতে আগ্রহী নন, তবে প্রোগ্রামটির ফলাফল - এটি কি কাজ করে?
diff "helloworld$x.out" "output/helloworld$x.out" && echo "success" || echo "failure"
&&& এর ব্যবহার সম্পর্কে পড়তে এবং || "শর্টকাট এবং শর্টকাট OR" অনুসন্ধান করুন।
আউটপুট পরিষ্কার রাখতে, আপনি 'ডিফ' এর আউটপুট কোথাও পুনর্নির্দেশ করতে পারেন:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null && echo "success" || echo "failure"
সাফল্য দখল করতে এবং পরে এটি মূল্যায়ন করতে, আপনি শেষ কমান্ডের ফলাফলটি একটি ভেরিয়েবলের সাথে $ ?: সহ সঞ্চয় করেন:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null
result=$?
# do something else
case $result in
0) echo success ;;
*) echo failure ;;
esac
... > /dev/nullএই প্রসঙ্গে কী করে। ডিফের আউটপুট গোটো / ডেভ / নাল হবে তবে কিছুই না?