Linux / Unix Command: expr

اسم

expr - تقييم تعبير

ملخص

expr arg ؟ أرجى أرجل ... ؟

Concatenates arg (يضيف مسافات فاصلة بينها) ، يقيم النتيجة كتعبير Tcl ، ويعيد القيمة. المشغلات المسموح بها في تعبيرات Tcl هي مجموعة فرعية من المشغلين المسموح بها في تعبيرات C ، ولها نفس المعنى والأسبقية مثل مشغلي C المقابل. غالباً ما ينتج عن التعبيرات نتائج رقمية (عدد صحيح أو قيم الفاصلة العائمة). على سبيل المثال ، التعبير

expr 8.2 + 6

يقيّم إلى 14.2. تختلف تعبيرات Tcl عن تعبيرات C بالطريقة التي يتم بها تحديد المعاملات. أيضا ، تدعم تعبيرات Tcl المعاملات غير الرقمية ومقارنات السلاسل.

المعاملات

يتكون تعبير Tcl من مجموعة من المعاملات والمشغلين والأقواس. يمكن استخدام المسافة البيضاء بين المعاملات والمشغلين والأقواس ؛ يتم تجاهلها من خلال تعليمات التعبير. حيثما أمكن ، يتم تفسير المعاملات على أنها قيم عدد صحيح. يمكن تحديد قيم عدد صحيح بالقيمة العشرية (الحالة العادية) ، في octal (إذا كان الحرف الأول للمعامل هو 0 ) ، أو بالنظام الست عشري (إذا كانت أول حرفين من المعامل 0x ). إذا كان المعامل لا يحتوي على أحد التنسيقات الصحيحة المذكورة أعلاه ، فإنه يتم التعامل معه كرقم عائم إذا كان ذلك ممكنًا. قد يتم تحديد أرقام الفاصلة العائمة بأي من الطرق المقبولة بواسطة مترجم C متوافق مع ANSI (فيما عدا أن اللاحقة F و F و l و L لن يتم السماح بها في معظم عمليات التثبيت). على سبيل المثال ، كل ما يلي هي أرقام الفاصلة العائمة صالحة: 2.1 ، 3. ، 6e4 ، 7.91e + 16. إذا لم يكن هناك تفسير رقمي ممكن ، فسيتم ترك المعامل كسلسلة (ويمكن تطبيق مجموعة محدودة فقط من المشغلين عليه).

قد يتم تحديد العمليات التجارية بأي من الطرق التالية:

[1]

كقيمة رقمية ، إما عدد صحيح أو عائم.

[2]

كمتغير TCL ، باستخدام تدوين $ القياسي. سيتم استخدام قيمة المتغير كمعامل.

[3]

كسلسلة محاطة بعلامات اقتباس مزدوجة. يقوم المحلل اللغوي للتعبير بإجراء الاستبدال العكسي ، والمتغير ، واستبدال الأوامر على المعلومات بين علامات الاقتباس ، واستخدام القيمة الناتجة كمتحول

[4]

كسلسلة مغلقة في الأقواس. سيتم استخدام الأحرف بين القوس المفتوح وسندة الإغلاق المتطابقة كمتحول دون أية بدائل.

[5]

كقضية TCL محاطة بين قوسين. سيتم تنفيذ الأمر وسيتم استخدام نتيجته كمعامل.

[6]

كدالة رياضية لها من الحجج أي من الأشكال المذكورة أعلاه للمعاملات ، مثل الخطيئة ($ x) . انظر أدناه للحصول على قائمة الوظائف المحددة.

عندما تحدث بدائل أعلى (على سبيل المثال داخل سلاسل مقتبسة) ، يتم تنفيذها بواسطة تعليمات التعبير. ومع ذلك ، قد تم بالفعل تنفيذ طبقة إضافية من استبدال بواسطة محلل الأمر قبل أن يتم استدعاء معالج التعبير. كما هو موضح أدناه ، من الأفضل عادةً تضمين التعبيرات في الأقواس لمنع محلل الأمر من إجراء بدائل على المحتويات.

بالنسبة لبعض الأمثلة على التعبيرات البسيطة ، افترض أن المتغير a يحتوي على القيمة 3 والمتغير b له القيمة 6. ثم سيؤدي الأمر على الجانب الأيسر من كل من الأسطر أدناه إلى عرض القيمة على الجانب الأيمن من الخط:

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

العاملين

عوامل التشغيل الصالحة مدرجة أدناه ، مجمعة بتدريج ترتيب الأسبقية:

- + ~!

Unary ناقص، unary plus، bit-wise NOT، منطقي NOT. لا يجوز تطبيق أي من هذه المعاملات على المعاملات المتسلسلة ، ويمكن تطبيق bit-wise NOT على الأعداد الصحيحة فقط.

* /٪

اضرب ، قسّم ، الباقي. لا يمكن تطبيق أي من هذه المعاملات على المعاملات المتسلسلة ، ويمكن تطبيق الباقي على الأعداد الصحيحة فقط. سيكون الباقي دائما علامة نفس القاسم وقيمة مطلقة أصغر من المقسوم عليه.

+ -

جمع وطرح. صالح لأي معاملات رقمية.

<< >>

تحول اليسار واليمين. صالح للمعالجات الصحيحة فقط. دائمًا ما ينشر التبديل الصحيح بتة التسجيل.

<> <=> =

منطقية أقل ، أكبر ، أقل من أو تساوي ، وأكبر من أو تساوي. كل مشغل ينتج 1 إذا كان الشرط صحيح ، 0 خلاف ذلك. يمكن تطبيق هذه العوامل على السلاسل وكذلك المعاملات الرقمية ، وفي هذه الحالة يتم استخدام مقارنة السلسلة.

==!

منطقية مساوية وغير متساوية. كل عامل ينتج نتيجة صفر / واحد. صالح لجميع أنواع المعاملات.

و

بت الحكمة و. صالح للمعالجات الصحيحة فقط.

^

Bit-wise الحصري أو. صالح للمعالجات الصحيحة فقط.

|

بت الحكمة أو. صالح للمعالجات الصحيحة فقط.

&&

منطقي و. ينتج نتيجة واحدة إذا كانت كلا المعاملات غير صفرية ، 0 خلاف ذلك. صالح للاستخدامات المنطقية و الرقمية (أعداد صحيحة أو عائمة) فقط.

||

منطقية أو. ينتج نتيجة 0 إذا كان كلا المعاملات صفرًا ، 1 خلاف ذلك. صالح للاستخدامات المنطقية و الرقمية (أعداد صحيحة أو عائمة) فقط.

س ؟ y : ض

إذا ، عندئذ ، آخر ، كما هو الحال في C. إذا قيمت x إلى غير الصفر ، فإن النتيجة هي قيمة y . خلاف ذلك ، والنتيجة هي قيمة ض . يجب أن يكون المعامل x قيمة رقمية.

راجع دليل C للحصول على مزيد من التفاصيل حول النتائج التي ينتجها كل مشغل. جميع مجموعة المشغلين الثنائيين من اليسار إلى اليمين في نفس مستوى الأسبقية. على سبيل المثال ، الأمر

expr 4 * 2 <7

إرجاع 0.

The && ، || ، و :: لدى المشغلين "تقييم كسول" ، تمامًا كما في C ، مما يعني أنه لا يتم تقييم المعاملات إذا لم تكن هناك حاجة لتحديد النتيجة. على سبيل المثال ، في الأمر

expr {$ v؟ [أ]: [ب]}

سيتم تقييم واحد فقط من [a] أو [b] ، اعتمادًا على قيمة $ v . لاحظ ، مع ذلك ، أن هذا صحيح فقط إذا كان التعبير بأكمله محاطًا بأقواس. خلاف ذلك ، سوف يقوم محلل Tcl بتقييم كل من [a] و [b] قبل استدعاء الأمر expr .

وظائف الرياضيات

يدعم Tcl الوظائف الحسابية التالية في التعبيرات:

abs cosh log sqrt acos double log10 srand asin exp pow tan atan floor rand tanh atan2 fmod round ceil hypot sin cos cos int

القيمة المطلقة ( arg )

لعرض القيمة المطلقة لـ arg . قد يكون Arg إما عددًا صحيحًا أو نقطة عائمة ، ويتم إرجاع النتيجة في نفس النموذج.

acos ( arg )

لعرض قوس جيب التمام arc ، في نطاق radia [0 ، pi]. يجب أن يكون الارجان في النطاق [-1،1].

asin ( arg )

لعرض الجيب arc لـ arg ، في النطاق [-pi / 2، pi / 2] راديان. يجب أن يكون الارجان في النطاق [-1،1].

atan ( arg )

إرجاع ظل قوس arg ، في النطاق [-pi / 2، pi / 2] راديان.

atan2 ( س ، ص )

إرجاع ظل ظل y / x ، في النطاق [-pi ، pi] radians. لا يمكن أن يكون x و y 0.

سقف ( الارجنتين )

إرجاع أصغر قيمة عدد صحيح لا يقل عن arg .

كوس ( الارج )

إرجاع جيب تمام arg ، تم قياسه بالراديان.

كوش (الارج )

إرجاع جيب التمام الزائدي من arg . إذا تسببت النتيجة في تجاوز ، يتم إرجاع خطأ.

مزدوجة ( الارجنتين )

إذا كانت قيمة arg هي قيمة عائمة ، تقوم بارجاع arg ، وتقوم بتحويل arg إلى floating وإرجاع القيمة المحولة.

exp ( arg )

تقوم بإرجاع الأسيّة arg ، المعرّفة كـ e ** arg . إذا تسببت النتيجة في تجاوز ، يتم إرجاع خطأ.

الكلمة ( الارج )

يرجع أكبر قيمة تكاملية لا تزيد عن arg .

fmod ( س ، ص )

إرجاع الباقي النقطة العائمة لتقسيم x بواسطة y . إذا كان y هو 0 ، يتم إرجاع خطأ.

نقصان ( س ، ص )

يحسب طول الوتر من المثلث القائم الزاوية ( س * س + ص * ص ).

int ( الارج )

إذا كانت قيمة arg هي قيمة عدد صحيح ، تقوم بارجاع arg ، وتقوم بتحويل arg إلى عدد صحيح عن طريق الاقتطاع وتقوم بارجاع القيمة المحولة.

سجل ( arg )

إرجاع اللوغاريتم الطبيعي للوج . يجب أن يكون ال Arg قيمة إيجابية.

log10 ( arg )

إرجاع اللوغاريتم الأساسي 10 للقيمة arg . يجب أن يكون ال Arg قيمة إيجابية.

أسرى الحرب ( س ، ص )

يحسب قيمة x مرفوعة إلى الطاقة y . إذا كانت قيمة x سالبة ، يجب أن يكون y قيمة صحيحة.

راند ()

إرجاع رقم نقطة عائمة من صفر إلى أقل من واحد أو ، من الناحية الرياضية ، النطاق [0،1]. تأتي البذرة من الساعة الداخلية للجهاز أو قد يتم ضبطها يدويًا باستخدام وظيفة srand.

جولة ( أرج )

إذا كانت قيمة arg هي قيمة عدد صحيح ، تقوم بارجاع arg ، وتحول arg إلى عدد صحيح عن طريق تقريب وإرجاع القيمة المحولة.

الخطيئة ( arg )

تُرجع الجيب الخاص بالقيمة arg تقاس بالراديان.

سينه ( الارجنتين )

يرجع الجيب الزائدي من arg . إذا تسببت النتيجة في تجاوز ، يتم إرجاع خطأ.

sqrt ( arg )

يرجع الجذر التربيعي لل arg . يجب أن يكون الارجاع غير سلبي.

سوراند (الارجنتين )

يتم استخدام arg ، والذي يجب أن يكون عددًا صحيحًا ، لإعادة تعيين البذور لمولد الأعداد العشوائي. إرجاع أول رقم عشوائي من تلك البذرة. كل مترجم لديه بذوره الخاص.

تان ( الارجنتين )

إرجاع ظل الـ arg ، تم قياسه بالراديان.

تانح

إرجاع ظل ظل من arg .

بالإضافة إلى هذه الوظائف المحددة مسبقًا ، قد تحدد التطبيقات وظائف إضافية باستخدام Tcl_CreateMathFunc ().

أنواع ، تجاوز ، ودقة

تتم جميع الحسابات الداخلية التي تشتمل على الأعداد الصحيحة بطول C ، ويتم إجراء جميع الحسابات الداخلية التي تتضمن نقطة عائمة مع النوع C المزدوج . عند تحويل سلسلة إلى نقطة عائمة ، يتم الكشف عن الفائض الأسية وينتج خطأ Tcl. للتحويل إلى عدد صحيح من السلسلة ، يعتمد اكتشاف تجاوز السعة على سلوك بعض الإجراءات في مكتبة C المحلية ، لذا يجب اعتبارها غير موثوقة. في أي حال ، لا يتم بشكل عام الكشف عن الفائض أو التدفق الأدنى بشكل موثوق للنتائج الوسيطة. تم الكشف عن تجاوز الفوهة العائمة وتدفق أسفل إلى الدرجة التي تدعمها الأجهزة ، والتي عادة ما تكون موثوقة إلى حد ما.

يتم التحويل بين التمثيلات الداخلية لمعاملين صحيحين ، وعائمة عائمة ، وسلسلة تلقائيا عند الحاجة. بالنسبة للحسابات الحسابية ، يتم استخدام الأعداد الصحيحة حتى يتم إدخال رقم النقطة العائمة ، وبعد ذلك يتم استخدام النقطة العائمة. فمثلا،

expr 5/4

يعود 1 ، في حين

expr 5 / 4.0 expr 5 / ([string length "abcd"] + 0.0)

كلاهما العودة 1.25. يتم دائمًا إرجاع قيم الفاصلة العائمة باستخدام `` . أو " e" بحيث لا تبدو كقيم صحيحة. فمثلا،

expr 20.0 / 5.0

إرجاع 4.0 وليس 4 .

عمليات السلسلة

يمكن استخدام قيم السلسلة كمعاملات لمشغلي المقارنة ، على الرغم من أن مقيم التعبير يحاول إجراء مقارنات على هيئة عدد صحيح أو نقطة عائمة عندما يمكن ذلك. إذا كان أحد معاملات المقارنة عبارة عن سلسلة وأخرى تحتوي على قيمة عددية ، يتم تحويل المعامل العددي إلى سلسلة باستخدام محدد تنسيق c sprintf ٪ d للأعداد الصحيحة و ٪ g لقيم الفاصلة العائمة. على سبيل المثال ، الأوامر

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

كلا الإرجاع 1. يتم إجراء المقارنة الأولى باستخدام المقارنة الصحيحة ، ويتم القيام الثاني باستخدام مقارنة السلسلة بعد تحويل المعامل الثاني إلى السلسلة 18 . بسبب ميل Tcl إلى معاملة القيم كأرقام كلما أمكن ذلك ، فإنه ليس من المستحسن بشكل عام استخدام عوامل التشغيل مثل == عندما تريد بالفعل مقارنة السلسلة وقد تكون قيم المعاملات عشوائية ؛ من الأفضل في هذه الحالات استخدام الأمر string بدلاً من ذلك.

اعتبارات الأداء

إرفاق التعبيرات في الأقواس للحصول على أفضل سرعة ومتطلبات التخزين أصغر. هذا يسمح مترجم Tec bytecode لإنشاء رمز أفضل.

كما ذكر أعلاه ، يتم استبدال التعبيرات مرتين: مرة واحدة عن طريق محلل Tcl ومرة ​​واحدة عن طريق الأمر expr . على سبيل المثال ، الأوامر

تعيين 3 مجموعة ب {{a a +}} expr $ b * 4

عودة 11 ، وليس مضاعف 4. وهذا لأن محلل Tcl سيحل أولاً $ a + 2 للمتغير b ، ثم سيقوم الأمر expr بتقييم التعبير $ a + 2 * 4 .

معظم التعبيرات لا تتطلب جولة ثانية من البدائل. إما أن تكون محاطة بأقواس ، أو إذا لم تكن كذلك ، فإن بدائلها المتغيرة وأوامرها تؤدي إلى أرقام أو سلاسل لا تتطلب نفسها بدائل. ومع ذلك ، نظرًا لأن بعض التعبيرات غير المعروفة تحتاج إلى جولتين من الاستبدالات ، فيجب على برنامج التحويل البرمجي bytecode إصدار تعليمات إضافية للتعامل مع هذا الموقف. الرمز الأكثر تكلفة مطلوب للحصول على تعبيرات غير محدثة تحتوي على بدائل الأمر. يجب تنفيذ هذه التعبيرات عن طريق إنشاء شفرة جديدة في كل مرة يتم فيها تنفيذ التعبير.

الكلمات الدالة

الحساب ، منطقي ، مقارنة ، تعبير ، مقارنة ضبابية

هام: استخدم الأمر man ( ٪ man ) لمعرفة كيفية استخدام أمر ما على جهاز الكمبيوتر الخاص بك.