OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

توسعات غير متوقعة

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


يمكن أن تثبت:



#! / بن / باش


# مشكلة: البرنامج النصي لتوضيح الأخطاء الشائعة


رقم =


إذا كان [$ number = 1] ؛ من ثم

صدى "الرقم يساوي 1." آخر

صدى "الرقم لا يساوي 1."

fi

#! / بن / باش


# مشكلة: البرنامج النصي لتوضيح الأخطاء الشائعة


رقم =


إذا كان [$ number = 1] ؛ من ثم

صدى "الرقم يساوي 1." آخر

صدى "الرقم لا يساوي 1."

fi


يؤدي تشغيل البرنامج النصي بهذا التغيير إلى الإخراج:



[me @ linuxbox ~] $ مشكلة

/ home / me / bin / trouble: line 7: [: =: عامل أحادي الرقم متوقع لا يساوي 1.

[me @ linuxbox ~] $ مشكلة

/ home / me / bin / trouble: line 7: [: =: عامل أحادي الرقم متوقع لا يساوي 1.


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



[$ number = 1]

[$ number = 1]


يخضع للتوسع مع عدد كونه فارغًا ، النتيجة هي:


[= 1]

[= 1]


وهو ما هو غير صالح ويتم إنشاء الخطأ. ال = العامل هو عامل تشغيل ثنائي (يتطلب قيمة من كل جانب) ، لكن القيمة الأولى مفقودة ، لذا فإن تجربه بالعربي يتوقع الأمر عامل تشغيل أحادي (مثل -z) في حين أن. علاوة على ذلك ، منذ تجربه بالعربي فشل (بسبب الخطأ) ، فإن if يتلقى الأمر رمز خروج غير صفري ويعمل وفقًا لذلك ، والثاني صدى يتم تنفيذ الأمر.

يمكن تصحيح هذه المشكلة عن طريق إضافة علامات اقتباس حول الوسيطة الأولى في تجربه بالعربي

أمر:


["$ number" = 1]

["$ number" = 1]


ثم عند حدوث التوسع ، ستكون النتيجة كما يلي:



["" = 1]

["" = 1]


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


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: