শেল ফাংশন সংজ্ঞা: খোলার ধনুর্বন্ধনী পরে কেন একটি জায়গা আছে?


18

আপনি সম্ভবত কাঁটা বোমা সম্পর্কে জানেন :

 :(){ :|:&};: #WARNING: harmful code

আমি ভাবছি কেন এটি প্রয়োজনীয়, কারণ এটি বিশ্লেষণ, খোলার কোঁকড়া ধনুর্বন্ধনী পরে একটি স্থান অন্তর্ভুক্ত।

উত্তর:


13

{}

          { list; }

কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে কমান্ডের একটি তালিকা স্থাপনের ফলে তালিকার বর্তমান শেল প্রসঙ্গে কার্যকর করা হবে। কোনও সাবশেল তৈরি হয় না। সেমিকোলন (বা নিউলাইন) নিম্নলিখিত তালিকাটি প্রয়োজনীয়।

সাবসেল তৈরির পাশাপাশি historicalতিহাসিক কারণে এই দুটি নির্মাণের মধ্যে একটি সূক্ষ্ম পার্থক্য রয়েছে। ধনুর্বন্ধনীগুলি সংরক্ষিত শব্দের, তাই তাদের খালি বা অন্যান্য শেল মেটাচার্যাক্টর দ্বারা তালিকা থেকে পৃথক করা আবশ্যক। প্রথম বন্ধনী অপারেটর এবং শ্বেত স্পেস দ্বারা তালিকা থেকে পৃথক না হলেও শেল দ্বারা পৃথক টোকেন হিসাবে স্বীকৃত।

// উত্স


1
আমি এই পৃষ্ঠায় আমার নিজের পোস্টে আপনার উত্তর দিয়ে quibble করেছি। এটি একটি ফাংশন যা কোনও কমান্ড গ্রুপিং নয়।
donothingsuccessfully

3
@Donothingsuccessfully একটি ফাংশন বডি হ'ল কমান্ড গ্রুপিং।
গিলস 'অশুভ হওয়া বন্ধ করুন'

3

আমি মনে করি @Rush এখানে বিভ্রান্তিমূলক উত্তর দিলে একটি সঠিক দিতে পারে। কাঁটাচামচ " " নামে একটি ফাংশন সংজ্ঞায়িত করে :। ফাংশনটি চূড়ান্ত দ্বারা ডাকা না হওয়া পর্যন্ত কোঁকড়া ধনুর্বন্ধনীগুলিতে কোড কার্যকর করা হয় না :। সুতরাং কমান্ড গ্রুপিং হিসাবে কোঁকড়া ধনুর্বন্ধনী এবং ফাংশন বডি হিসাবে কোঁকড়া ধনুর্বন্ধনী কৃত্রিমভাবে একই তবে বিভিন্ন শব্দার্থবিজ্ঞান রয়েছে। @ রশ উদ্ধৃতি হিসাবে
একই নথি থেকে :

নোট করুন যে historicalতিহাসিক কারণে, সর্বাধিক প্রচলিত ব্যবহারে ফাংশনটির দেহকে ঘিরে থাকা কোঁকড়ানো ধনুর্বন্ধনীগুলি অবশ্যই ফাঁকা বা নিউলাইন দ্বারা শরীর থেকে পৃথক করা উচিত। এর কারণ হ'ল ধনুর্বন্ধনীগুলি সংরক্ষিত শব্দ এবং কেবল যখন সেগুলি হোয়াইটস্পেস বা অন্য শেল মেটাচারাক্টারের দ্বারা কমান্ড তালিকা থেকে পৃথক করা হয় কেবল তখনই স্বীকৃত। এছাড়াও, ধনুর্বন্ধনী ব্যবহার করার সময়, তালিকাটি অবশ্যই একটি সেমিকোলন, একটি '&', বা একটি নতুন লাইন দ্বারা বন্ধ করতে হবে।


3
না, রাশ এর উত্তর সঠিক। কোনও ফাংশন বডির চারপাশের কোঁকড়ানো ধনুর্বন্ধনীগুলি একই সিনট্যাকটিক উপাদান হিসাবে যখন কোনও ফাংশন বডিটি সীমাবদ্ধ করা হয় না। দেখুন শেল ব্যাকরণ নিয়ম A: function_bodyএকটি হল compound_command(প্লাস একটি ঐচ্ছিক redirect_list)। স্থান প্রয়োজন কারণ {একটি সংরক্ষিত শব্দ, বিশেষ চরিত্র নয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

হ্যাঁ, রাশ এর উত্তর সঠিক, যেমনটি আমি বলেছি। হ্যাঁ, এগুলি সিন্টেক্সিকভাবে একই, যেমনটি আমি বলেছিলাম। কিন্তু brace_groupকোনও ফাংশনের অংশ যখন এবং কখন না হয় তখন ভিন্ন আচরণ করে। আমি পরবর্তী ঘটনাটি বর্ণনা করতে কমান্ড গ্রুপিং ব্যবহার করছিলাম এবং রাশ এর লিঙ্কে এটিই বর্ণনা করা হয়েছিল।
donothingsuccessfully

2
আমি নিশ্চিত নই যে এখানে শব্দার্থক পার্থক্যটি তাৎপর্যপূর্ণ, কারণ এটি সিনট্যাক্স যা পার্সারের পক্ষে গুরুত্বপূর্ণ। আসল উত্তরটি {অপারেটর নয় বরং একটি সংরক্ষিত শব্দ এবং আলাদা আলাদা হিসাবে বিবেচনা করার জন্য শব্দগুলিকে অন্য শব্দ থেকে পৃথক করা দরকার।
jw013
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.