ব্যাশ নিয়ে ইদানীং আমার কিছু অদ্ভুত সমস্যা হচ্ছে। আমার স্ক্রিপ্টটি সরল করার চেষ্টা করার সময় আমি এই ছোট্ট কোডের কোডটি নিয়ে এসেছি:
$ o(){ echo | while read -r; do return 0; done; echo $?;}; o
0
$ o(){ echo | while read -r; do return 1; done; echo $?;}; o
1
returnমুদ্রণ $?না করে ফাংশন থেকে বেরিয়ে আসা উচিত ছিল, তাই না? ঠিক আছে, তাহলে আমি পরীক্ষা করেছিলাম যে আমি কোনও পাইপ থেকে ফিরে আসতে পারি কিনা:
$ echo | while read -r; do return 1; done
bash: return: can only `return' from a function or sourced script
whileলুপ ছাড়াই একই ঘটে :
$ foo(){ : | return 1; echo "This should not be printed.";}
$ foo
This should not be printed.
আমি এখানে কি অনুপস্থিত কিছু আছে? একটি গুগল অনুসন্ধান এ সম্পর্কে কিছুই এনেছে! আমার বাশ সংস্করণটি 4.2.37 (1) - দেবিয়ান হুইজির উপর দয়া করে।
whileপ্রজননের জন্য প্রয়োজন না হলে কেন প্রথম দুটি উদাহরণ মুছে ফেলবেন না? এটি বিন্দু থেকে বিভ্রান্ত হয়।
whileএকটি পাইপের সাথে একটি লুপ একটি খুব সাধারণ ব্যবহার return। দ্বিতীয় উদাহরণটি আরও সোজা, তবে এটি এমন কিছু যা আমি বিশ্বাস করি না যে কেউ কখনও ব্যবহার করবে ...