টিএল; ডিআর : পজিক্স ব্রেস গোষ্ঠীটি কেন {
সংরক্ষিত শব্দের পরে ফাঁকা স্থানের প্রয়োজন তবে সাবস্কেল সংরক্ষিত শব্দের পরে নয় (
?
POSIX শেল ব্যাকরণ ব্রেস গ্রুপ এবং সাবশেল নিম্নলিখিত হিসাবে সংজ্ঞায়িত করে
brace_group : Lbrace compound_list Rbrace
subshell : '(' compound_list ')'
এখন, আমরা যদি আক্ষরিকভাবে এটি পড়ছি, স্পেসগুলি উল্লেখযোগ্য। এর অর্থ হ'ল স্পেস ডিলিনেটিং ওপেনিং এবং ক্লোজিং ব্রেস এবং প্রথম বন্ধনী থাকতে হবে
{ echo hello world; }
( echo hello world )
এটি যৌগিক কমান্ড সংজ্ঞাগুলির সাথেও সারিবদ্ধ হবে :
এই যৌগিক কমান্ডগুলির প্রত্যেকটির শুরুতে একটি সংরক্ষিত শব্দ বা নিয়ন্ত্রণ অপারেটর থাকে এবং শেষে টার্মিনেটর সংরক্ষিত শব্দ বা অপারেটর থাকে।
তবে যা বোঝায় না তা হ'ল কেন (list)
এবং ( list )
ঠিক কাজ করুন (পরে যে স্থানটির (
প্রয়োজন হয় না) তবে ব্রেস সম্প্রসারণের একটি অগ্রণী স্থান থাকতে হবে, অর্থাৎ {echo hello;}
কাজ করবে না।
শেল শব্দ হিসাবে অবশ্যই সংরক্ষিত শব্দের সাথে ক্ষেত্র বিভাজনের ধারণার সাথে সারিবদ্ধ হওয়ার জন্য একটি স্থানের প্রয়োজন পরে বোঝা যাবে , তবে সংজ্ঞা নিজেই ফাঁকের কোনও উল্লেখ করে না। তদ্ব্যতীত, {
এবং (
উভয়ই যৌগিক কমান্ডের পসিক্স সংজ্ঞা দ্বারা সংরক্ষিত শব্দ হিসাবে বিবেচনা করা হয়, তবে কেন এই সংরক্ষিত শব্দের পরে স্থানের অক্ষরের সাথে তাদের আলাদা আচরণ করা হবে? এখন, ksh (1) ম্যানুয়ালটি জানিয়েছে:
শব্দগুলি, যা অক্ষরের ক্রম, অব্যক্ত সাদা-স্থানের অক্ষর (স্পেস, ট্যাব এবং নিউলাইন) বা মেটা-অক্ষর (<,>, |,;, &, (এবং)) দ্বারা সীমিত করা হয়
অন্য কথায়, এটি বোধগম্য হয় যে ksh (
শব্দের ডিলিমিটার হিসাবে স্বীকৃতি দেয় , যেখানে প্রথম শব্দটি একটি আদেশ বা পরিবর্তনশীল অ্যাসাইনমেন্ট হবে। পসিক্স, তবে (
মেটা-চরিত্র হিসাবে উল্লেখ করা হবে না । পসিক্স ব্যাকরণ পর্যন্ত কেবলমাত্র সম্ভাব্য ব্যাখ্যাটিই আমি খুঁজে পেলাম এটি {
একটি "টোকেন" হিসাবে বিবেচিত, যেখানে হিসাবে (
এটি একটি হিসাবে তালিকাভুক্ত নয়।
/* These are reserved words, not operator tokens, and are
recognized when reserved words are recognized. */
%token Lbrace Rbrace Bang
/* '{' '}' '!' */
সুতরাং এই তাত্পর্য জন্য সঠিক যুক্তি কি হবে?
গৃহীত উত্তর নোট:
আইজ্যাকের উত্তরে স্বীকৃত চেকমার্ক সরানো হয়েছে যেহেতু এটি Q ইউটকে নিজেই স্ট্যান্ডার্ড সরবরাহ করে যা সরাসরি আমার প্রশ্নের সমাধান করে:
উদাহরণস্বরূপ, '(' এবং ')'
<space>
হ'ল কন্ট্রোল অপারেটর, যাতে (তালিকায়) কোনও প্রয়োজন হয় না। তবে, ';' এবং '}'} list; in এর মধ্যে সংরক্ষিত শব্দ, যাতে এই ক্ষেত্রে শীর্ষস্থানীয়<space>
এবং<semicolon>
প্রয়োজনীয় হয়।কুসালানন্দের জবাব মেনে নিচ্ছি। বেশিরভাগ অনানুষ্ঠানিক ও স্বজ্ঞাতদৃষ্টির দৃষ্টিকোণ থেকে যদিও কুসালানন্দের উত্তরটি আমার যা প্রয়োজন তা সম্বোধন করে; এটি দেখায় যে{
একটি সংরক্ষিত শব্দ এবং(
অপারেটর। মাইকেল হোমার মন্তব্যগুলিতেও এটি উল্লেখ করেছিলেন - যে যৌগিক কমান্ড সংজ্ঞাটি জানিয়েছে (জোর দেওয়া হয়েছে):এই যৌগিক কমান্ডগুলির প্রত্যেকটির শুরুতে একটি সংরক্ষিত শব্দ বা নিয়ন্ত্রণ অপারেটর রয়েছে
{
শেল ব্যাকরণে তালিকাভুক্তfor
বা এর অনুরূপ সংরক্ষিত শব্দ হিসাবে সংজ্ঞায়িত করা হয়েছেwhile
(প্রশ্নের শেষ কোড ব্লকটি দেখুন)বিভাগ ২.৯ বলছে (জোর দেওয়া হয়েছে):
বিশেষত, উপস্থাপনাগুলি এমন কিছু জায়গায় টোকেনের মধ্যে ব্যবধান অন্তর্ভুক্ত করে যেখানে
<blank>
এসগুলি প্রয়োজন হবে না (যখন টোকেনগুলির মধ্যে একটি অপারেটর থাকে)।যদিও মানটি
(
অপারেটর হিসাবে স্পষ্টভাবে সংজ্ঞায়িত করে না ,(
অপারেটর হিসাবে উল্লেখ করা হয়; বিশেষত, বিভাগ 2.9.2 বলছেপাইপলাইন শুরু হলে সংরক্ষিত শব্দ! এবং কমান্ড 1 একটি সাবশেল কমান্ড, অ্যাপ্লিকেশনটি নিশ্চিত করবে যে (কমান্ড 1 এর শুরুতে অপারেটর এক বা একাধিক অক্ষর দ্বারা! পৃথক! সংরক্ষিত শব্দের আচরণ! অবিলম্বে অনুসরণকারী (অপারেটর অনির্ধারিত)।
ডিজিটাল ট্রমা দ্বারা স্ট্যাক ওভারফ্লো সম্পর্কিত প্রশ্ন সংরক্ষিত শব্দের উপরের অংশটি ২.৪ দেখায়:
এই স্বীকৃতিটি তখনই ঘটতে পারে যখন কোনও অক্ষরের উদ্ধৃতি না দেওয়া হয় এবং যখন শব্দটি ব্যবহৃত হয়:
কমান্ডের প্রথম শব্দ
যেমনটি কুসালানন্দের জবাবে উল্লেখ করা হয়েছে "পসিক্স ব্যাকরণে প্রদর্শিত ফাঁকা স্থানগুলি শেল ইনপুট ডেটাতে থাকা দরকার নয়, ব্যাকরণটি প্রদর্শন করার কেবল একটি উপায়। তাদের সাদা অংশে ঘিরে থাকতে হবে " মাইকেল হোমার মন্তব্যগুলিতে যেমন উল্লেখ করেছেন :" স্পেসগুলি যদি তাদের নিজস্বভাবে উল্লেখযোগ্য হত তবে তাদের উত্পাদনে তালিকাভুক্ত করা দরকার "
মামলা বন্ধ.
{
এবং (
যৌগ কমান্ডের POSIX সংজ্ঞা দ্বারা উভয় বিবেচিত সংরক্ষিত শব্দ" cf. "এই প্রতিটি যৌগিক কমান্ডের শুরুতে একটি সংরক্ষিত শব্দ বা নিয়ন্ত্রণ অপারেটর রয়েছে"।
' '
) অন্তর্ভুক্ত করতে হত । পরিবর্তে, স্পেসগুলি টোকেনগুলি কী শব্দ দ্বারা বোঝানো হয়।
command : simple_command | compound_command | compound_command redirect_list | function_definition ;
একটি প্রকাশনা যা বলেছে তুমি কমান্ড থাকতে পারে যেখানে, এটা সহজ কমান্ড যৌগ কমান্ড বা অন্য কোন ওয়েবপেজ সঙ্গে যৌগ কমান্ড, অথবা একটি ফাংশন সংজ্ঞা এক হতে পারে না।