लिनक्स / यूनिक्स कमान्ड: expr

नाम

expr - एक अभिव्यक्तिको मूल्याङ्कन गर्नुहोस्

सारांश

expr arg ? आर्ग आर्ग ... ?

Concatenates आर्ग (तिनीहरूलाई बीच विभाजक रिक्त स्थान थप्दै), परिणाम Tcl अभिव्यक्तिको रूपमा मूल्याङ्कन गर्छ, र मान फर्काउँछ। Tcl अभिव्यक्तिहरूमा अनुमति दिइएका अपरेटरहरू सी अभिव्यक्तिमा अनुमति दिने अपरेटरहरूको एक सबसेट हो, र तिनीहरूसँग सम्बन्धित सी अपरेटरहरूको रूपमा एउटै अर्थ र पूर्वनिर्धारित छ। अभिव्यक्तिहरू लगभग संख्यात्मक परिणामहरू (पूर्णांक वा अस्थायी बिन्दु मानहरू) उपज हुन्छ । उदाहरणका लागि, अभिव्यक्ति

expr 8.2 + 6

14.2 लाई मूल्याङ्कन गर्दछ। Tcl अभिव्यक्तिहरू संचालित निर्दिष्ट तरिकामा C अभिव्यक्तिबाट फरक छ। साथै, Tcl अभिव्यक्तिहरू गैर-संख्यात्मक सञ्चालन र स्ट्रिंग तुलनाहरू समर्थन गर्दछ।

सञ्चालन गर्दछ

A Tcl अभिव्यक्ति ओपरेन्ड, अपरेटर, र अभिभावकहरूको संयोजन हो। सेतो ठाउँ ओपरेन्ड र अपरेटरहरू र अभिभावकहरू बीच प्रयोग गर्न सकिन्छ; यो अभिव्यक्तिका निर्देशनहरू द्वारा बेवास्ता गरिएको छ। जहाँ सम्भव छ, सञ्चालन पूर्णाङ्क मानहरूको रूपमा व्याख्या गरिएको छ। पूर्णांक मान दशमलव (सामान्य मामला) मा निर्दिष्ट हुन सक्छ, अक्टोटलमा (यदि अप््यान्डण्डको पहिलो वर्ण 0 हो ), वा हेक्सडेसिमलमा (यदि अप्पण्डको पहिलो दुई क्यारेक्टर 0x हो भने )। यदि माथि उल्लेखित एक पूर्णांक ढाँचा मध्ये एक अपरेन्डन छैन, त्यसपछि यो सम्भव छ यदि अस्थायी बिन्दु नम्बरको रूपमा व्यवहार गरिन्छ। फ्लोटिंग बिन्दु नम्बरहरू ANSI-compliant C compiler द्वारा स्वीकृत कुनै पनि तरिकामा निर्दिष्ट हुन सक्दछ (बाहेक जुन भन्दा धेरै स्थापनाहरूमा F , F , L , and L suffixes लाई अनुमति छैन)। उदाहरणको लागि, सबै निम्न मान्य फ्लोटिंग-पोइन्ट नम्बरहरू छन्: 2.1, 3., 6e4, 7.91e + 16। यदि कुनै संख्यात्मक व्याख्या सम्भव छ भने, त्यसपछि एउटा अपरेण्ड स्ट्रिङको रूपमा छोडिएको छ (र अपरेटरहरूको मात्र सीमित सेट यो लागू हुन सक्छ)।

सञ्चालन निम्न कुनै पनि तरिकामा निर्दिष्ट गर्न सकिन्छ:

[1]

संख्यात्मक मानको रूपमा, किन्न पूर्णांक वा अस्थायी बिन्दु।

[2]

एक Tcl चरको रूपमा, मानक $ नोटेशन प्रयोग गर्दै। चरको मान अपरेण्डको रूपमा प्रयोग गरिनेछ।

[3]

डबल-उद्धरणहरूमा संलग्न स्ट्रिङको रूपमा। अभिव्यक्ति पार्सर उद्धरणहरू बीचको जानकारीमा ब्याकस्ल्याश, चर, र कमाण्ड प्रतिस्थापनहरू प्रदर्शन गर्नेछ, र परिणामको रूपमा प्रयोग गर्ने अपरेण्ड

[4]

ब्रेसिजमा संलग्न स्ट्रिङको रूपमा। खुल्ला ब्रेस र मिल्दो नजिक काँध बीच क्यारेक्टरहरू कुनै पनि प्रतिस्थापन बिना अप््यान्डन्डको रूपमा प्रयोग गरिनेछ।

[5]

कोष्ठकमा संलग्न Tcl आदेशको रूपमा। आदेश निष्पादित गरिनेछ र यस परिणाम ओपरेन्डको रूपमा प्रयोग गरिनेछ।

[6]

एक गणितीय प्रकार्यको रूपमा जसको तर्कले माथिको कुनै पनि फारमहरू सञ्चालन गर्दछ जस्तै पाप ($ x) । परिभाषित प्रकार्यहरूको सूचीको लागि तल हेर्नुहोस्।

जहाँ प्रतिस्थापनहरू माथि देखा पर्दछ (उदाहरणार्थ उद्धृत पङ्क्ति भित्र भित्र), तिनीहरू अभिव्यक्तिका निर्देशनहरू द्वारा गरिन्छ। तथापि, अभिव्यक्ति प्रोसेसर भनिन्छ पहिले एक विकल्प को अतिरिक्त तह कमांड पार्सर द्वारा प्रदर्शन गरिएको हुन सक्दछ। तल छलफल गरी, यो सामान्यतया ब्रेक्समा अभिव्यक्तिहरू संलग्न गर्नको लागि सर्वोत्तम हुन्छ सामग्रीमा substitutions प्रदर्शन गर्न आदेश पार्सर रोक्न।

साधारण अभिव्यक्तिका केही उदाहरणहरूको लागि, मान मानमा मान 1 मान छ र चरको मूल्य मान छ। त्यसपछि तलका प्रत्येक रेखाको बाँया छेउमा कमाई लाइनको दायाँ छेउमा हुनेछ:

expr 3.1 + $ a6.1 expr 2 + "$ a। $ b" 5.6 expr 4 * [llength "6 2"] 8 expr {{one one} <"word $ a"} 0

अपरेटरहरू

मान्य अपरेटरहरू तल सूचीबद्ध छन्, पूर्वनिर्धारितको घट्दो क्रममा समूहबद्ध:

- + ~!

युनिटरी माइनस, यूनरी प्लस, बिट-वार नोट, तार्किक नोट। यी कुनै पनि सञ्चालन स्ट्रिंग अपरेसनहरूमा लागू हुन सक्दैन, र बिट-वार न केवल पूर्णाङ्कहरूमा लागू हुन सक्छ।

* /%

बहुभाषी, विभाजित, शेष। यी कुनै पनि सञ्चालन स्ट्रिंग अपरेसनहरूमा लागू हुन सक्दैन, र बाँकी मात्र पूर्णाङ्कहरूमा लाग्न सक्छ। बाँकीमा सधैं विभाजनको रूपमा विभाजन र विभागीय भन्दा एकदम पूर्ण मानको रूपमा एक चिन्ह हुनेछ।

+ -

थप्नुहोस् र घटाउनुहोस्। कुनै पनि संख्यात्मक सञ्चालनका लागि मान्य।

<< >>

बायाँ र दायाँ पछाडि। पूर्णांकको लागी मान्य काम मात्र। दाँया पछाडिले सधैं साईन बिग गर्दछ।

<> <=> =

बूलियन, कम, अधिक भन्दा कम वा बराबर, र भन्दा बढी वा बराबर। प्रत्येक संचालक 1 उत्पादन हुन्छ यदि शर्त सत्य हो, 0 अन्यथा। यी अपरेटरहरू स्ट्रिङ र संख्यात्मक परिचालनमा लागू गर्न सकिन्छ, जसमा कर्ता स्ट्रिङ तुलना प्रयोग गरिन्छ।

==! =

बूलियन बराबर र बराबर छैन। प्रत्येक अपरेटरले शून्य / एक परिणाम सिर्जना गर्दछ। सबै सञ्चालन प्रकारका लागि मान्य।

&

बिट-बुद्धि र। पूर्णांकको लागी मान्य काम मात्र।

^

बिट-वार अनन्य वा। पूर्णांकको लागी मान्य काम मात्र।

|

बिट-वार्म OR। पूर्णांकको लागी मान्य काम मात्र।

&&

तार्किक र। एक 1 नतिजा उत्पन्न गर्दछ यदि अपरेन्डहरू गैर शून्य हो, 0 अन्यथा। बूलियन र सांख्यिकको लागि मान्य (पूर्णाङ्क वा अस्थायी बिन्दु) मात्र सञ्चालन गर्दछ।

||

तार्किक OR। यदि 0 अपरेन्डहरू शून्य हो भने 0 नतिजा उत्पन्न गर्दछ, अन्यथा। बूलियन र सांख्यिकको लागि मान्य (पूर्णाङ्क वा अस्थायी बिन्दु) मात्र सञ्चालन गर्दछ।

x ? y : z

यदि-तब-अरू, जस्तै सी मा। यदि एक्स शून्यमा मूल्याङ्कन गर्दछ, त्यसपछि परिणाम y को मान हो। अन्यथा, परिणाम z को मान हो। एक्स अपरेण्डनसँग संख्यात्मक मान हुनुपर्छ।

प्रत्येक अपरेटर द्वारा उत्पादित नतीजाहरु मा अधिक जानकारी को लागि सी मैनुअल हेर्नुहोस। बाइनरी अपरेटरहरू सबै बायाँ-देखि-दायाँ एउटै पूर्वनिर्धारित स्तर भित्र। उदाहरणका लागि, आदेश

expr 4 * 2 <7

0 फर्काउँछ।

&& , || , र ?: अपरेटरहरु लाई `` सुस्त मूल्यांकन 'को रूप मा, जस्तै सी मा, जसको अर्थ छ कि संचालन को मूल्यांकन नहीं गरिए यदि परिणाम को निर्धारित गर्न आवश्यक छैन। उदाहरणका लागि, आदेशमा

expr {$ v? [a]: [b]}

$ a को मूल्यमा निर्भर गर्दछ, केवल [a] वा [b] को एक मात्र मूल्याङ्कन गरिनेछ। तथापि, तथापि, यो केवल सत्य हो यदि सम्पूर्ण अभिव्यक्ति ब्रेसिजमा संलग्न छ; अन्यथा, Tcl पार्सर expr कमांड गर्नु अघि दुवै [a][बी] को मूल्यांकन गर्नेछ।

गणित कार्यहरू

Tcl अभिव्यक्ति मा निम्न गणितीय कार्य को समर्थन गर्दछ:

अवकाश कोश लग sqrtrt acos डबल लग 10 srand asin exp tan tan atan floor rand tanh 2an fmod round ceil hypot sin cos int sinh

abs ( arg )

आर्गको पूर्ण मान फर्काउँछ। Arg या तो पूर्णांक वा अस्थायी बिन्दु हुन सक्छ, र परिणाम एकै प्रकारमा फर्काइयो।

acos ( arg )

श्रेणी [0, pi] radians मा आर्ग को आर्क कस्टिन फर्काउँछ। आरआरआर [-1,1] दायरामा हुनुपर्दछ।

asin ( arg )

दायराको आर्क सिङ्क फर्काउँछ, रेंज [-pi / 2, pi / 2] radians मा। आरआरआर [-1,1] दायरामा हुनुपर्दछ।

atan ( arg )

रेज [arpi / 2, pi / 2] radians मा आर्ग को आर्क टान्जेन्ट फर्काउँछ।

atan2 ( x, y )

दायरा [-pi, pi] radians मा y / x को arc tangent फर्काउँछ। एक्सवाई दुवै हुन सक्दैन 0।

छिल (तर्क )

सबभन्दा सानो पूर्णांक मान आर्ग भन्दा कम छैन।

cos ( arg )

रेडियनहरूमा मापन गरेको आर्गिनको कोलोन फर्काउँछ।

कोश ( आर्गन )

आर्गको हाइपरबोलिक कोस्टिन फर्काउँछ। यदि परिणाम अतिप्रवाह हुन सक्छ भने, एक त्रुटि फर्काइएको छ।

दुबै ( आर्गुमेन्ट )

यदि आर्ग एक अस्थायी मान हो, रिटर्न आर्गन गर्छ , अन्यथा तर्कलाई अस्थायी रूपमा बदल्छ र परिवर्तित मान फर्काउँछ।

एक्स ( तर्क )

ई ** तर्कको रूपमा परिभाषित आर्गको विस्तारजनक फर्काउँछ। यदि परिणाम अतिप्रवाह हुन सक्छ भने, एक त्रुटि फर्काइएको छ।

तल्ला ( आर्गन )

आर्ग भन्दा ठूलो होइन भन्दा सबैभन्दा ठूलो अभिन्न मूल्य फर्काउँछ।

fmod ( x, y )

X द्वारा विभाजनको अस्थायी बिन्दु बाँकी फर्काउँछ। यदि y हो 0, त्रुटि फिर्ता आउँछ।

सम्मोहन ( एक्स, वाई )

दायाँ-एङ्गल त्रिकोण ( x * x + y * y ) को हाइपोटोन्युजको लम्बाइलाई तुलना गर्दछ।

int ( arg )

यदि आर्ग एक पूर्णांक मान हो, रिटर्न तर्क , अन्यथा ट्रंकलेशन द्वारा इनटेगरमा धर्ती धर्ती गर्दछ र परिवर्तित मान फर्काउँछ।

लग ( तर्क )

आर्गको प्राकृतिक लारिथ्म फर्काउँछ। Arg एक सकारात्मक मान हुनु पर्छ।

लग 10 (तर्क )

आर्गको आधार 10 लारिथ्म फर्काउँछ। Arg एक सकारात्मक मान हुनु पर्छ।

पाउ ( एक्स, वाई )

X को मान बिजुली y मा सारिएको छ। यदि x नकारात्मक छ भने, y एक पूर्णांक मान हुनुपर्छ।

rand ()

फ्लोटिंग पोइन्ट नम्बर शून्यबाट मात्र एक भन्दा कम गर्न सकिन्छ वा गणितीय नियममा, दायरा [0,1]। बीउ मेशिनको आन्तरिक घडीबाट आउँछ वा srand प्रकार्यसँग म्यानुअल सेटअप गर्न सकिन्छ।

राउन्ड ( आर्गन )

यदि आर्ग एक पूर्णांक मान हो, रिटर्न आर्गुमेन्ट हुन्छ , अन्यथा ग्रिडिंग द्वारा आर्गुजरमा आर्गन धर्ती गर्दछ र परिवर्तित मान फर्काउँछ।

पाप ( आर्गन )

रेडियनहरूमा मापी , आर्गको सिइन फर्काउँछ।

sinh ( arg )

आर्गको हाइपरबोलिक साइन फर्काउँछ। यदि परिणाम अतिप्रवाह हुन सक्छ भने, एक त्रुटि फर्काइएको छ।

sqrt ( arg )

आर्गको वर्ग मूल फर्काउँछ। आरआर गैर-नकारात्मक हुनुपर्छ।

srand ( arg )

आर्ग , जो एक पूर्णांक हुनु पर्छ, बेइजिङ अनियमित नम्बर जनरेटरको लागि रिसेट गर्न प्रयोग गरिन्छ। त्यो बीउबाट पहिलो अनियमित नम्बर फर्काउँछ। प्रत्येक शब्दावलीको आफ्नै बीउ छ।

तान्नु ( arg )

आर्गान्टको ट्यांगेंट फर्काउँछ, रेडियनहरूमा मापन गरिन्छ।

tanh ( arg )

आर्गको हाइपरबोलिक टान्जेन्ट फर्काउँछ।

यी पूर्वनिर्धारित प्रकार्यहरू को अतिरिक्त, अनुप्रयोगहरूले Tcl_CreateMathFunc () प्रयोग गरेर थप प्रकार्यहरू परिभाषित गर्न सक्छन्।

प्रकारहरू, ओभरफ्लो र प्रेसिजन

सबै आन्तरिक कम्प्युटेशनहरू समावेश गरिएको पूर्णांकहरू सी प्रकार लामोसँग सञ्चालन हुन्छन्, र फ्लोटिङ-बिन्दु समावेश गरिएको सबै आन्तरिक कम्प्युटेशनहरू सी प्रकार डबलसँग गरिन्छ । स्ट्रिङमा फ्लोटिङ-बिन्दु रूपान्तरण गर्दा, घटक ओभरफ्लो पत्ता लगाइएको छ र परिणाम Tcl त्रुटिमा। स्ट्रिंगबाट पूर्णाङ्कमा रूपान्तरणको लागि, ओभरफ्लोको पत्ता लगाउँदा स्थानीय C पुस्तकालयमा केहि मार्गहरु को व्यवहारमा निर्भर गर्दछ, त्यसैले यसलाई अविश्वसनीय मानिन्छ। कुनै पनि अवस्थामा, पूर्णांक ओवरफ्लो र भित्ता आम तौर पर मध्यवर्ती नतीजाहरु को लागि सुसंगत देखि थाहा छैन। फ्लोटिङ-बिन्दु ओभरफ्लो र भित्ता हार्डवेयर द्वारा समर्थन गरिएको डिग्रीलाई पत्ता लगाईयो, जुन सामान्यतया धेरै विश्वसनीय छ।

पूर्णांक, फ्लोटिंग-बिन्दु, र स्ट्रिङ अपरेसनको लागि आन्तरिक प्रस्तुतिहरूमा रूपान्तरण स्वचालित रूपमा आवश्यक भएमा। गणित कम्प्यूटेशनहरूका लागि, पूर्णांक-पोइन्ट नम्बर पेश गरिएको नभएसम्म पूर्णांकहरू प्रयोग गरिन्छ, पछि कुन अस्थायी बिन्दु प्रयोग गरिन्छ। उदाहरणका लागि,

expr 5/4

फर्काउँछ 1, जबकि

Expr 5 / 4.0 expr 5 / ([स्ट्रिंग लम्बाई "abcd"] + 0.0)

दुबै फिर्ती 1.25। फ्लोटिंग-बिन्दु मानहरू सधैं `` सँग फर्काइन्छ '' वा ई - ताकि उनि पूर्णाङ्क मान जस्तो देखिने छैन। उदाहरणका लागि,

expr 20.0 / 5.0

फिर्ती 4.0 , होइन 4

स्ट्रिङ अपरेसनहरू

स्ट्रिंग मूल्यहरू तुलना अपरेटरहरूको सञ्चालनको रूपमा प्रयोग गर्न सकिन्छ, यद्यपि अभिव्यक्ति मूल्यांकनकर्ताले तुलना गर्न को लागी पूर्णांक वा अस्थायी बिन्दुको रूपमा तुलना गर्ने प्रयास गर्दछ। यदि एक तुलना को संचालन को एक स्ट्रिंग हो र अन्य संख्यात्मक मान छ, संख्यात्मक ओपरेन्ड को फिर्ता स्ट्रिंग मा परिवर्तित गर्दछ को रूप मा C स्प्रंटफ प्रारूप विनिर्देशक % d को फ्लोटिंग-बिन्दु मानहरुको लागि integers र % g को लागि। उदाहरणका लागि, आदेशहरू

expr {"0x03"> "2"} expr {"0y" <"0x12"}

दुवै फर्काउनु 1. पहिलो तुलनामा पूर्णांक तुलनाको प्रयोग गरी गरिन्छ, र दोस्रो स्ट्रिंगको तुलनामा दोस्रो अपरेन्ड तार स्ट्रिङ 18 मा परिवर्तित भएपछि प्रयोग गरिन्छ। जबसम्म सम्भव भएसम्म संख्याहरू मान्नको लागी Tcl को प्रवृत्ति को लागी, यो सामान्यतया राम्रो ऑपरेटर जस्तै == जस्तै जब तपाईं स्ट्रिंग तुलना चाहानुहुन्छ र मानहरु को मान मान्य हुन सक्छ; यो परिस्थितिमा सट्टा स्ट्रिंग आदेश प्रयोग गर्न राम्रो छ।

प्रदर्शन विचारहरू

उत्कृष्ट गति र सानो भण्डारण आवश्यकताहरूको लागि ब्रेन्समा अभिव्यक्तिहरू खुला गर्नुहोस्। यसले सर्वोत्तम कोड उत्पन्न गर्न Tcl bytecode संकलकलाई अनुमति दिन्छ।

माथि उल्लेखित रूपमा, अभिव्यक्ति दुई पटक प्रतिस्थापित गरिएको छ: एक पटक Tcl पार्सर द्वारा र एक पटक Expr आदेश द्वारा। उदाहरणका लागि, आदेशहरू

3 सेट b {$ a + 2} expr $ b * 4 सेट गर्नुहोस्

11 लाई फर्काउनुहोस्, 4 को बहुविध होइन। यो किनभने किनभने Tcl पार्सरले पहिले चर b को लागि $ a + 2 लाई स्थानान्तरण गर्नेछ, त्यसपछि Expr कमान अभिव्यक्ति $ a + 2 * 4 को मूल्याङ्कन गर्नेछ।

अधिक अभिव्यक्तिहरू प्रतिस्थापनको दोस्रो चरणको आवश्यकता पर्दैन। या त तिनीहरू ब्रेसिजमा संलग्न छन् वा, यदि होइन भने, तिनीहरूको चर र कमाण्ड प्रतिस्थापनहरू संख्याहरू वा तारहरू उत्पन्न गर्छन् जुन आफूलाई प्रतिस्थापनको आवश्यकता पर्दैन। यद्यपि, किनकि केही अपरिचित अभिव्यक्तिहरू प्रतिस्थापनको दुईवटा राउन्ड चाहिन्छ, bytecode संकलकले यो परिस्थितिलाई थप निर्देशन गर्नका लागि थप निर्देशनहरू मिलाउन आवश्यक छ। सबैभन्दा महंगी कोड आवश्यक छ कि आदेश प्रतिस्थापन समावेश नगरिएका अभिव्यक्तिहरूका लागि। यी अभिव्यक्तिहरू अभिव्यक्ति निष्पादित गरिन्छ प्रत्येक पटक नयाँ कोड उत्पन्न गरी कार्यान्वयन गर्न अनिवार्य छ।

खोजशब्दहरू

गणित, बूलियन , तुलना, अभिव्यक्ति, फजी तुलना

महत्वपूर्ण: तपाईको विशेष कम्प्युटरमा आदेश कसरी प्रयोग गरिन्छ भनेर हेर्नको लागि मानिसको आदेश ( % मानिस ) प्रयोग गर्नुहोस्।