আমি কেন বিভ্রান্ত করছি "| সত্য "একটি মেকফাইলে" || এর মতোই প্রভাব রয়েছে সত্য "


13

আমার একটি মেকফিল রয়েছে যেখানে আমি কোনও ফাইল সরানোর আগে কোনও পরিষেবা বন্ধ করছি। এটি পরিষেবাটি থামাতে না পারলে এটি ত্রুটির উপর ভেঙে যায়। এটি পরিষ্কারভাবে অযাচিত তাই আমি ভেবেছিলাম আমি যুক্ত করব তবে || trueএকটি মিস করেছি |। এটি তৈরি:

stop service foo | true
rm /etc/init/foo.conf

এটি কেন কাজ করছে এবং কী ঘটছে তা নিয়ে আমি বিভ্রান্ত। এর অর্থ কি trueএটি একটি অ্যাপ্লিকেশন এবং কেবল একটি কীওয়ার্ড নয়? তারা কি একই? ব্যবহার করার কোনও ভাল কারণ আছে | true?

উত্তর:


16

trueএবং falseহয় coreutils (এছাড়াও সাধারণত শেল বিল্ট-ইন) শুধু 0 এবং অ 0 আসতে যে, পরিস্থিতি যেখানে আপনি যে আচরণ প্রয়োজন ঘটতে জন্য। ম্যান পৃষ্ঠাগুলি থেকে:

সত্য - কিছুই করবেন না, সফলভাবে
মিথ্যা - কিছু করবেন না, ব্যর্থ

আপনার কাছ থেকে আউটপুট বংশীধ্বনিতুল্য করছি যাতে করে stop service fooমধ্যে true, যা এটি এবং আয় 0. টেকনিক্যালি এটি কাজ করে উপেক্ষা করে, কিন্তু আপনি সম্ভবত ব্যবহার করা উচিত || true, তাই এটি সুস্পষ্ট তোমার উদ্দেশ্য ছিল; যে প্রোগ্রামটি এটি ব্যবহার করছে না তাতে পাইপের আউটপুট দেওয়ার আসলে কোনও কারণ নেই


4
নিখুঁত জ্ঞান তোলে। :) কেন জানি না তবে পড়তে "কিছুই করি না, অসফল"। আমাকে হাসাও.
কিট সুন্দে

9
এড়ানোর আরেকটি কারণ | trueহ'ল যদি কমান্ডটি পাইপ বাফারটি পূরণ করার জন্য পর্যাপ্ত আউটপুট তৈরি করে, এটি এটি trueপড়ার অপেক্ষায় অবরুদ্ধ হবে।
সিজেএম

3
@ সিজেএম বা সিপাইপ এর কারণে মারা যান
অ্যান্ডি

6
@ কিট: দ্রষ্টব্য foo || trueএবং foo | trueএকই জিনিসটি করবে না: foo || trueআউটপুটটি প্রদর্শিত হবে foo, যেখানে foo | trueসবকিছু fooতার স্ট্যান্ডার্ড আউটপুটকে ফেলে দেবে (এবং ইতিমধ্যে উল্লিখিত হিসাবে fooএটি মারা SIGPIPEবা ব্লক হওয়ার সম্ভাবনা রয়েছে )।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

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