लिनक्स / यूनिक्स कमांड: एक्सप्र

नाव

expr - एक अभिव्यक्ती मूल्यमापन

सारांश

एक्सस्प आर्ग ? arg arg ... ?

कॉन्टॅनेटएनेट ऑफ आर्ग (त्यांचा विभाजक स्पेस जोडणे), परिणाम टीसीएल अभिव्यक्तीचे मूल्यमापन करते आणि मूल्य परत करते. टीएसीएल ऍम्फेसेसमध्ये परवानगी दिलेल्या ऑपरेटर सी एक्स्प्रेशनमध्ये परवानगी असलेल्या ऑपरेटरच्या उपसंच आहेत, आणि त्यांच्याशी संबंधित सी ऑपरेटर्स प्रमाणे त्यांचे समान अर्थ आणि प्राधान्य आहे. अभिव्यक्ती जवळजवळ नेहमीच अंकीय परिणाम (पूर्णांक किंवा अस्थायी-बिंदू मूल्ये) मिळवते. उदाहरणार्थ, अभिव्यक्ती

एक्सप्र 8.2 + 6

14.2 वर मूल्यांकन करते टीएसीएल अभिप्राय कॉम्प्लेक्समध्ये ज्याप्रकारे निर्देशांक विनिर्दिष्ट आहेत अशा प्रकारे वेगळे आहेत. तसेच, टीसीएल एक्सप्रेशन नॉन-न्यूमेरिक ऑपरेंसेस आणि स्ट्रिंग कंपन्सन्स चे समर्थन करतात.

ऑपरेंड्स

एका Tcl अभिव्यक्तीमध्ये ऑपरेंड, ऑपरेटर आणि कंसांचा संयोग समाविष्ट असतो. ऑपरेशन्स आणि ऑपरेटर आणि कंस दरम्यान व्हाइट स्पेस वापरला जाऊ शकतो; तो अभिव्यक्ती च्या सूचना द्वारे दुर्लक्षित आहे शक्य असेल तिथे, ऑपरेंटर्सची पूर्णांक संख्या म्हणून अर्थ लावले जातात. अंकीय मूल्यांचा दशांश (सामान्य केस) मध्ये निर्दिष्ट केला जाऊ शकतो, ऑक्टलमध्ये (जर ऑपरेंमचे पहिले अक्षर 0 असेल तर), किंवा हेक्झाडेसीमल मध्ये (जर ऑपरेंडचे प्रथम दोन वर्ण 0x असतील ). जर एका ऑपरेंपमध्ये वर दिलेला इंटिजर फॉरमॅट नसला, तर तो शक्य असेल तर तो फ्लोटिंग-पॉईंट क्रमांक मानला जातो. फ्लोटिंग-पॉइंट नंबर हे एएनएसआय-कॉम्प्युलर सी कंपाइलर (त्या व्यतिरिक्त एफ , एफ , एल आणि एल प्रत्यय बहुतेक प्रतिष्ठापनांमध्ये अनुमत नाहीत) शिवाय स्वीकारलेल्या कोणत्याही प्रकारे निर्दिष्ट केले जाऊ शकतात. उदाहरणार्थ, खालील सर्व वैध फ्लोटिंग-पॉइंट नंबर आहेत: 2.1, 3., 6e4, 7.91e + 16 जर सांख्यिक अर्थ सांगता येत नसेल, तर ऑपरेंड एक स्ट्रिंग म्हणून उरला आहे (आणि केवळ ऑपरेटर्सचा मर्यादित संच लागू होऊ शकतो).

ऑपरेशन्स खालीलपैकी कोणत्याही प्रकारे निर्दिष्ट केले जाऊ शकतात:

[1]

एक संख्यात्मक मूल्य म्हणून, एकतर पूर्णांक किंवा फ्लोटिंग-पॉइंट.

[2]

मानक $ नोटेशन वापरून Tcl चलन म्हणून. व्हेरिएबलचे मूल्य ऑपरेंड म्हणून वापरले जाईल.

[3]

एक स्ट्रिंग म्हणून दुहेरी अवतरण चिन्हात. अभिव्यक्ती विश्लेषक अवतरणांमधील माहितीवर बॅकस्लॅश, वेरियेबल आणि कमांड रिफेर्यूशन्स सादर करेल आणि परिणामी मूल्य ऑपरेंड म्हणून वापरेल

[4]

चौकटीत असलेली एक स्ट्रिंग म्हणून ओपन ब्रेस आणि जुळणारे जवळचे कंस दरम्यानचे अक्षर इतर कुठलेही अवलंबन न करता ऑपरेंड म्हणून वापरले जातील.

[5]

ब्रॅकेटसमध्ये असलेल्या Tcl कमांड प्रमाणे आज्ञा कार्यान्वित होईल आणि त्याचा परिणाम परिसर म्हणून वापरला जाईल.

[6]

गणिती कार्याच्या रूपात, ज्यांचे आर्ग्युमेंट्स वरील कोणतेही ऑपरेटरसाठी वरील फॉर्म आहेत, जसे की पाप ($ x) . परिभाषित फंक्शन्सच्या सूचीसाठी खाली पहा.

उपस्थीती वर उद्भवते (उदा. उद्धृत केलेल्या स्ट्रिंग्समध्ये), त्या अभिव्यक्तीच्या निर्देशांनुसार केल्या जातात तथापि, अभिव्यक्ती प्रोसेसर म्हणून कॉल करण्यापूर्वी प्रतिस्थापनाचा एक अतिरिक्त स्तर आधीपासूनच आदेश विश्लेषक द्वारे केला गेला होता. खाली नमूद केल्याप्रमाणे, कमांड पार्सरला सामग्रीवरील बदली करण्यापासून रोखण्यासाठी हे ब्रेसेजमध्ये अभिव्यक्ति करणे सर्वात उत्तम असते.

साधारण अभिव्यक्तींच्या काही उदाहरणांसाठी, समजा व्हेरिएबलमध्ये मूल्य 3 आणि व्हेरिएबल b ची व्हॅल्यू 6 असेल. नंतर खालील प्रत्येक ओळीच्या डाव्या बाजूवरील कमांड लाईनच्या उजव्या बाजूला मूल्य देईल:

expr 3.1 + $ a6.1 expr 2 + "$ a. $ b" 5.6 expr 4 * [लालिंदी "6 2"] 8 एक्सप्र {{शब्द एक} <"शब्द $ a"} 0

ऑपरेटर

वैध ऑपरेटर खालीलप्रमाणे आहेत, प्राधान्य कमी होण्याच्या क्रमवारीत गटात समाविष्ट केले आहे:

- + ~!

Unary minus, unary plus, bit- wise NOT, तार्किक NOT. यापैकी एकही ऑपरेटिंग स्ट्रिंग ऑपरेंड्सवर लागू होऊ शकत नाही, आणि बीट-वार न केवळ पूर्णांकांसाठी लागू होऊ शकते.

* /%

गुणाकार, वाटणे, उर्वरित यापैकी एकही ऑपरेटिंग स्ट्रिंग ऑपरेंड्सवर लागू होऊ शकत नाही आणि उर्वरित केवळ पूर्णांकांसाठी लागू होऊ शकते. उर्वरित सदैव विभाजक म्हणून एकच चिन्ह असेल आणि विभाजकापेक्षा लहान असणारे परिपूर्ण मूल्य.

+ -

जोडा आणि वजा करा कोणत्याही अंकीय ऑपरेंड्ससाठी वैध.

<< >>

डाव्या आणि उजव्या शिफ्ट पूर्णांक फक्त वैध आहे उजवीकडील शिफ्ट नेहमी चिन्ह बिट्सचा प्रसार करते.

<> <=> =

बूलियन कमी, जास्त, कमी किंवा समान, आणि मोठे किंवा समान जर कंडिशन true असेल तर प्रत्येक ऑपरेटर 1 ला तयार करतो, 0 अन्यथा. या ऑपरेटर स्ट्रिंग तसेच अंकीय ऑपरेंडवर लागू केले जाऊ शकतात, ज्या बाबतीत स्ट्रिंग तुलना वापरली जाते.

==! =

बुलियन समान आणि समान नाही. प्रत्येक ऑपरेटर शून्य / एक निकाल तयार करतो. सर्व ऑपरेंड प्रकारांसाठी वैध

&

बिट-वार आणि पूर्णांक फक्त वैध आहे

^

बिट-विशेष अनन्य किंवा. पूर्णांक फक्त वैध आहे

|

बिट-वार किंवा पूर्णांक फक्त वैध आहे

&&

तार्किक आणि. एक परिणाम 1 निर्मिती केल्यास दोन्ही ऑपर्रेसेस शून्य-शून्य आहेत, 0 अन्यथा. बुलियन आणि अंकीय (पूर्णांक किंवा फ्लोटिंग-पॉइंट) ऑपरेटर्ससाठी केवळ वैध.

||

लॉजिकल किंवा एक 0 परिणाम निर्मिती केल्यास दोन्ही ऑपरेंटर्स शून्य आहेत, अन्यथा 1. बुलियन आणि अंकीय (पूर्णांक किंवा फ्लोटिंग-पॉइंट) ऑपरेटर्ससाठी केवळ वैध.

x ? y : झहीर

जर-नंतर-दुसरा, सी म्हणून. जर x नॉन-झिरो चे मूल्यांकन करते, तर त्याचे परिणाम y चे मूल्य आहे. अन्यथा, परिणाम z ची व्हॅल्यू आहे. X प्रचालन आणि अंकीय मूल्य असणे आवश्यक आहे.

प्रत्येक ऑपरेटरने तयार केलेल्या परिणामांवर अधिक तपशीलांसाठी सी हस्तलिखित पहा. सर्व प्राधान्य पातळीच्या बाहेरील सर्व बायनरी ऑपरेटर समूह डावीकडून उजवीकडे उदाहरणार्थ, आदेश

एक्सप्रोड 4 * 2 <7

परत 0

&& , || , आणि?: ऑपरेटर `` आळशी मूल्यमापन '' आहेत, जसे की सी मध्ये, याचा अर्थ असा होतो की ऑपरेंसेसचे मूल्यमापन होत नाही, जर ते परिणाम निश्चित करण्यासाठी आवश्यक नसतील. उदाहरणार्थ, आदेशामध्ये

expr {$ v? [एक]: [ब]}

$ v च्या मूल्यावर अवलंबून केवळ [ए] पैकी एक किंवा [बी] चे मूल्यमापन केले जाईल. टीप, तथापि, हे फक्त खरे आहे की संपूर्ण अभिव्यक्ती ब्रेसिजमध्ये संलग्न आहे; अन्यथा, टीसीएल पार्स्टर एक्सप्र कमांड वापरण्यापूर्वी दोन्ही [ए] आणि [बी] चे मूल्यांकन करेल.

गणित कार्य

टीएसीएल खालील गणितीय कार्यांना अभिव्यक्तींमध्ये समर्थन देते:

पेट कोशा लॉग sqrt acos डबल लॉग 10 srand asin exp pow tan atan floor rand tanh atan2 fmod round seil hypot sin cos int sinh

abs ( आर्ग )

वितर्कचे परिपूर्ण मूल्य मिळवते Arg एकतर पूर्णांक किंवा फ्लोटिंग-पॉइंट असू शकतात आणि परिणाम त्याच स्वरूपात मिळवला जातो.

एकोस ( आरजीआर )

[0, पी] रेडिअन श्रेणीत, अरबचे आर्क कोसाइन मिळवते. Arg [-1,1] श्रेणीत असणे आवश्यक आहे.

असिन ( आर्ग )

श्रेणीतील [-pi / 2, pi / 2] व्याकरणातील आर्जेसच्या आर्च साइनची परत मिळवते. Arg [-1,1] श्रेणीत असणे आवश्यक आहे.

अतन ( आर्ग )

श्रेणीतील [-pi / 2, pi / 2] व्याकरणातील आर्जेसचा कंस टॅन्जंट मिळवते.

एटन 2 ( एक्स, वाई )

[-पीआय, पीआय] रेडियन श्रेणीत, y / x चे कंस टॅन्जंट मिळवते. x आणि y हे दोन्ही 0 असू शकत नाहीत

सील ( आर्ग )

वितर्कापेक्षा कमी न सर्वात लहान पूर्णांक मूल्य मिळवते

कॉस ( आर्ग )

रेडियन मध्ये मोजलेले वितर्कांचे कोसाइन मिळवते.

कॉश ( आर्ग )

वितर्कांचे हायपरबोलिक कोसाइन मिळवते. परिणाम ओलांडत झाल्यास, त्रुटी आली आहे.

दुहेरी ( आर्ग )

जर एजीआर एक फ्लोटिंग व्हॅल्यू असेल तर arg ला रिटर्न करेल, अन्यथा फ्लोटिंगसाठी आर्ग्युमेंट बदलते आणि रूपांतरित व्हॅल्यू परत करते.

ऍप ( आर्ग )

आर्ग च्या घातांकडे मिळवते, ई ** arg म्हणून परिभाषित. परिणाम ओलांडत झाल्यास, त्रुटी आली आहे.

फर्श ( आर्ग )

वितर्कांपेक्षा मोठा नसलेला सर्वात मोठा अविभाज्य मूल्य मिळवते.

fmod ( x, y )

Xby y च्या विभाजनाच्या अस्थायी-बिंदू उर्वरित मिळवते. जर 0 असेल तर त्रुटी आली आहे.

निदान ( x, y )

उजव्या कोनाच्या त्रिकोणाचा कर्ण ( x * x + y * y ) च्या लांबीची गणना करते.

इंटेल ( आर्ग )

जर एजीआर एक पूर्णांक मूल्य असेल तर, arg ला रिटर्न करेल, अन्यथा अर्ग्युमेंटला truncation द्वारे अर्ग्युरिटी रुपांतरित करते आणि रूपांतरित मूल्य परत करते.

लॉग ( आर्ग )

Arg चे नैसर्गिक लॉगेरिथम मिळवते Arg हे सकारात्मक मूल्य असणे आवश्यक आहे.

log10 ( arg )

मूळचे 10 लॉगॅरिदम मिळवते Arg हे सकारात्मक मूल्य असणे आवश्यक आहे.

पाऊ ( एक्स, वाय )

X ची व्हॅल्यू li जर x ऋण असेल, तर y हा एक पूर्णांक मूल्य असेल.

रँड ()

एक फ्लोटिंग पॉईंट नंबर शून्यापेक्षा एका पेक्षा कमी किंवा परत गणिती दृष्टीने, [0,1] श्रेणी मिळवते. बियाणे मशीनच्या अंतर्गत घड्याळाकडून येते किंवा srand फंक्शनसह मॅन्युअल सेट केले जाऊ शकते.

गोल ( आर्ग )

जर एजीआर एक पूर्णांक मूल्य असेल तर, arg ला रिटर्न करेल, अन्यथा rounding द्वारे integer ला आर्ग्यूमेंट रूपांतरित करते आणि रुपांतर मूल्य परत करते.

पाप ( आर्ग )

रेडियन मध्ये मापाचे आर्ग च्या साइन, परत मिळवते.

सिह ( आर्ग )

आर्ग च्या हायपरबोलिक साइन मिळवते परिणाम ओलांडत झाल्यास, त्रुटी आली आहे.

sqrt ( arg )

Arg चे वर्गमूळ परत मिळवते. Arg गैर-नकारात्मक असणे आवश्यक आहे.

srand (arg )

अरग , जे पूर्णांक असणे आवश्यक आहे, यादृच्छिक संख्या जनरेटर साठी बियाणे रीसेट करण्यासाठी वापरले जाते. त्या बीजमधून प्रथम यादृच्छिक संख्या मिळविते. प्रत्येक दुभाषाला स्वतःचे बी असते.

टॅन ( आर्ग )

त्रिज्यीमध्ये मोजलेले अर्गचे टॅन्जंट मिळवते.

टॅनह ( आरजीआर )

वितर्कांची हायपरबोलिक टॅन्जंट मिळवते.

या पूर्वनिर्धारित फंक्शन व्यतिरिक्त, अनुप्रयोग Tcl_CreateMathFunc () वापरून अतिरिक्त फंक्शन्स परिभाषित करू शकतात.

प्रकार, ओव्हरफ्लो आणि प्रेसिजन

इंटिजरचा समावेश असलेल्या सर्व अंतर्गत computations सी प्रकार लांब सह केले जातात, आणि फ्लोटिंग-बिंदू समावेश सर्व अंतर्गत computations सी प्रकार दुहेरी सह केले जातात. स्ट्रिंगला फ्लोटिंग-पॉईंटमध्ये रूपांतरित करताना, एक्सपोनंट ओव्हरफ्लो आढळले आहे आणि परिणामी Tcl त्रुटी आली आहे. स्ट्रिंग पासून पूर्णांकमध्ये रूपांतर करण्यासाठी, ओव्हरफ्लोचा शोध स्थानिक सी लायब्ररीमधील काही रूटीच्या वर्तनावर अवलंबून असतो, त्यामुळे त्याला अविश्वसनीय समजले जावे. कोणत्याही परिस्थितीत, पूर्णांक आणि अंडरफ्लो सामान्यत: दरम्यानचे परिणामांसाठी विश्वसनीयपणे आढळत नाहीत. फ्लोटिंग-पॉईंट ओव्हरफ्लो आणि अंडरफ्लो हार्डवेअर द्वारे समर्थित डिग्रीला आढळतात, जे सहसा खूप विश्वसनीय आहे

इंटिजर, फ्लोटिंग-पॉईंट आणि स्ट्रिंग ऑपरेंडसाठी अंतर्गत प्रतिनिधित्वांमध्ये रुपांतर आवश्यकतेनुसार आपोआप केले जाते. अंकगणित संगणनासाठी, काही अंकीय बिंदू क्रमांक सुरू होईपर्यंत समीकरणे वापरली जातात, ज्यानंतर अस्थायी-बिंदू वापरला जातो. उदाहरणार्थ,

एक्सप्रेशन 5/4

मिळवते 1, तर

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

दोन्ही परत 1.25 फ्लोटिंग-पॉइंट मूल्या नेहमी `` सह परत मिळतात . '' किंवा एखादे ई असे जेणेकरून ते पूर्णांक मूल्यासारखे दिसणार नाहीत. उदाहरणार्थ,

एक्सपी 20.0 / 5.0

रिटर्न 4.0 , नाही 4

स्ट्रिंग ऑपरेशन्स

स्ट्रिंग मूल्ये तुलना ऑपरेटरच्या ऑपरेंड्सच्या रूपात वापरली जाऊ शकतात, तथापि अभिव्यक्ती मूल्यांकन करणारा पूर्णांक किंवा फ्लोटिंग पॉइंट म्हणून तुलना करू शकतो जेव्हा ते करू शकतात. जर तुलना केलेल्या संचाचे एक एक स्ट्रिंग आहे आणि इतर एक अंकीय मूल्य असल्यास, अंकीय ऑपरेंड परत स्प्रिंटफ फॉर्मेट स्पेसिफायर % d चा वापर करून स्ट्रींगमध्ये बदलला जातो पूर्णांक साठी % d आणि फ्लोटिंग-पॉइंट मूल्यासाठी % g . उदाहरणार्थ, कमांडस

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

दोन्ही रिटर्न 1. प्रथम तुलना इंटिजर तुलना द्वारे केले जाते, आणि दुसऱ्या स्ट्रिंग तुलना वापरून केले जाते दुसऱ्या ऑपरेंड स्ट्रिंग 18 मध्ये रूपांतरित झाल्यानंतर. Tcl च्या शक्यतेनुसार शक्य तितक्या संख्येची संख्या मानण्याची Tcl च्या प्रवृत्तीमुळे, जेव्हा सामान्यपणे स्ट्रिंग तुलना करणे आवश्यक असते तेव्हा ऑपरेटर वापरणे ही एक चांगली कल्पना नाही आणि ऑपरेंडची मूल्ये अवास्तव असू शकतात; त्याऐवजी या प्रकरणी स्ट्रिंग कमांड वापरणे चांगले.

कामगिरीच्या दृष्टीने

सर्वोत्तम गती आणि लघु संग्रह आवश्यकतांसाठी गुणधर्मांमध्ये अभिव्यक्ति करा. हे Tcl बायटेकोड कंपाइलरला सर्वोत्तम कोड व्युत्पन्न करण्यास अनुमती देते.

वर नमूद केल्याप्रमाणे, सूत्रे दोन वेळा वापरली जातात: एकदा Tcl पार्सरद्वारे आणि एकदाच्या expr आज्ञा द्वारे. उदाहरणार्थ, कमांडस

सेट 3 सेट b {$ a + 2} एक्सस्प $ B * 4

परत 11, 4 च्या एकापेक्षा जास्त नाही. याचे कारण असे की Tcl पार्सर प्रथम व्हेरिएबल b साठी $ a + 2 बदलेल , नंतर expr कमांड एक्सप्रेशन $ a + 2 * 4 चे मूल्यांकन करेल.

बहुतेक प्रवर्तनांना दुसर्या फेरीवाला आवश्यक नसते एकतर ते चौकटी कंसात संलग्न आहेत किंवा, नसल्यास, त्यांचे वेरियेबल व आदेश प्रतिस्थापने उत्पन्न क्रमांक किंवा स्ट्रिंग ज्यांना स्वत: च्या बदल्यात आवश्यकता नाही तथापि, काही गैरब्रेध केलेल्या अभिव्यक्तींना दोन फेरबदल आवश्यक असल्यास, बाइट कोड कंपाइलरने ही परिस्थिती हाताळण्यासाठी अतिरिक्त सूचना सोडल्या पाहिजेत. आज्ञा न बदलणार्या अभिव्यक्तिंमधे सर्वात अमूल्य कोड असणे आवश्यक आहे. हे अभिव्यक्ति अभिव्यक्ती अंमलात येताना नवीन कोड तयार करून कार्यान्वित केले जाणे आवश्यक आहे.

कीवर्ड

अंकगणित, बुलियन , तुलना, अभिव्यक्ती, अस्पष्ट तुलना

महत्वाचे: आपल्या कॉम्प्यूटरवर आज्ञा कशी वापरली जाते हे पाहण्यासाठी man कमांड ( % man ) वापरा.