संरचना -ne
, -eq
, और -gt
कम से कम अजीब दिखता है।PowerShell में "-eq" के बराबर क्यों है और न केवल "="?
if ($true -eq $true){}
नहीं बल्कि
if ($true = $true){}
विवरण क्या है?
संरचना -ne
, -eq
, और -gt
कम से कम अजीब दिखता है।PowerShell में "-eq" के बराबर क्यों है और न केवल "="?
if ($true -eq $true){}
नहीं बल्कि
if ($true = $true){}
विवरण क्या है?
असल में जवाब यह है कि यूनिक्स ने इसे हमेशा के लिए कैसे किया है। निश्चित रूप से, यदि आप कुछ बैश स्क्रिप्ट लिखते हैं जो आप उपयोग करेंगे और वास्तव में आपके पावरशेल सिंटैक्स ज्ञान हस्तांतरण को एक के लिए एक में बैश करना होगा।
ब्रूस पेएट के में विंडोज पावरशेल एक्शन, द्वितीय संस्करण (किंडल स्थान 33 9 1) में विस्तार से इसका उत्तर दिया गया है।
पावरशेल भाषा में सबसे विवादास्पद डिज़ाइन निर्णय के बारे में बात करते हैं।
और विजेता है: क्यों बिल्ली नहीं था हम जैसे>,> =, < तुलना के लिए पारंपरिक प्रतीकों का उपयोग, < =, ==, और =?
उत्तर यह है कि> और < वर्ण आउटपुट पुनर्निर्देशन के लिए उपयोग किए जाते हैं। चूंकि पावरशेल एक खोल है और पिछले 30 वर्षों में सभी शैल भाषाएं ने I/O पुनर्निर्देशन के लिए> और < का उपयोग किया है, लोगों को उम्मीद है कि PowerShell ऐसा ही करना चाहिए। पावरशेल के पहले सार्वजनिक बीटा के दौरान, यह विषय महीनों तक चलने वाली चर्चाएं उत्पन्न हुई।
हमने विकल्पों की विविधता जैसे कि मोडल पार्सिंग को देखा जहां कभी-कभी> अधिक से अधिक और कभी-कभी इसका मतलब पुनर्निर्देशन होता था। हमने ऑपरेटरों के लिए वैकल्पिक वर्ण अनुक्रमों को देखा:> या ->, या तो पुनर्निर्देशन या तुलना के लिए। हमने उपयोगिता परीक्षण किया और फोकस समूह आयोजित किए, और अंत में, हमने जो शुरू किया था उस पर बस गए।
पुनर्निर्देशन ऑपरेटर> और < हैं, और तुलना ऑपरेटर यूनिक्स परीक्षण (1) कमांड से लिया गया है। हम उम्मीद करते हैं, क्योंकि इन ऑपरेटरों के पास 30-वर्षीय वंशावली है, वे PowerShell में उपयोग के लिए पर्याप्त और उपयुक्त हैं। (हम भी उम्मीद करते हैं कि लोगों को हालांकि उम्मीद है कि 30 से अधिक वर्षों के लिए नहीं इस निर्णय के बारे में शिकायत के लिए जारी रहेगा।)
क्योंकि >
और <
अधिकांश गोले में स्ट्रीम रीडायरेक्शन ऑपरेटर हैं। खैर, सिवाय इसके कि PowerShell स्ट्रीम इनपुट पुनर्निर्देशन का समर्थन नहीं करता है। इसके अलावा, कुछ मामलों में stdout को रीडायरेक्ट करने के लिए >
को पार्स/व्याख्या करना अधिक कठिन होगा और अन्य मामलों में greater than
। इसके अतिरिक्त -<operator_name>
दृष्टिकोण का उपयोग करके आप सहज ज्ञान युक्त प्रतीकों की तुलना में कई अधिक ऑपरेटरों को प्राप्त कर सकते हैं उदा। - कंटेनर, -notcontains, -is, -replace, -split, -match, आदि PowerShell द्वारा समर्थित सभी ऑपरेटरों को एक्सप्लोर करने के लिए प्रारंभिक बिंदु के रूप में man about_operators
निष्पादित करें।
ऑपरेटर = पहले से ही असाइनमेंट ऑपरेटर है।तुलना और असाइनमेंट ऑपरेटर को भ्रमित न करने के लिए वे दूसरे ऑपरेटर के लिए चुनते हैं। इस मामले में -ईक क्योंकि यह पहले से ही अन्य (यूनिक्स) स्क्रिप्टिंग भाषाओं में उपयोग में है।
अंत में कोई व्यक्ति '=' के उपयोग पर ओपी को कॉल करता है और नहीं '==': पी –
किस मामले में '>' पार्स करना अधिक कठिन होगा? – Restuta
अगर अभिव्यक्ति का दायरा काफी सीमित है। और मैं यह भी नहीं सोच सकता कि वहां रीडायरेक्ट कैसे किया जाए। –
और मुझे नहीं लगता कि अधिक ऑपरेटरों को यहां एक वैध तर्क है, मुझे लगता है कि संयुक्त दृष्टिकोण बेहतर काम करेगा, निम्नलिखित ऑपरेटरों '< >! = == 'अक्सर उपयोग किया जाता है और इसका समर्थन करने के लिए यह प्रयास करने योग्य है। – Restuta