OnWorks Linux و Windows Online WorkStations

الشعار

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

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

دمج التعبيرات

من الممكن أيضًا دمج التعبيرات لإنشاء تقييمات أكثر تعقيدًا. يتم دمج التفسيرات باستخدام عوامل التشغيل المنطقية. لقد رأينا هذه في الفصل 17 ، عندما علمنا عن جد أمر. هناك ثلاث عمليات منطقية لـ تجربه بالعربي و [[]]. هم و ، أو وليسوا. تجربه بالعربي و [[]] استخدام عوامل تشغيل مختلفة لتمثيل هذه العمليات:


جدول 27-4: العوامل المنطقية


عملية قسم التدريب والامتحاناتر [[]] و (())

عملية قسم التدريب والامتحاناتر [[]] و (())

لأي لبس -أ &&


صورة

OR -س ||


صورة

لا ! !


صورة


فيما يلي مثال على عملية AND. يحدد البرنامج النصي التالي ما إذا كان العدد الصحيح يقع ضمن نطاق من القيم:



#! / بن / باش


# test-صحيحا 3: تحديد ما إذا كان العدد الصحيح ضمن

# نطاق محدد من القيم.


MIN_VAL = 1 MAX_VAL = 100


ذكاء = 50

#! / بن / باش


# test-صحيحا 3: تحديد ما إذا كان العدد الصحيح ضمن

# نطاق محدد من القيم.


MIN_VAL = 1 MAX_VAL = 100


ذكاء = 50



إذا [["$ INT" = ~ ^ -؟ [0-9] + $]] ؛ من ثم

إذا [[INT -ge MIN_VAL && INT -le MAX_VAL]] ؛ ثم صدى "$ INT يقع في حدود $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT خارج النطاق."

فاي آخر

صدى "INT ليس عددًا صحيحًا." > & 2 الخروج 1

fi


إذا [["$ INT" = ~ ^ -؟ [0-9] + $]] ؛ من ثم

إذا [[INT -ge MIN_VAL && INT -le MAX_VAL]] ؛ ثم صدى "$ INT يقع في حدود $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT خارج النطاق."

فاي آخر

صدى "INT ليس عددًا صحيحًا." > & 2 الخروج 1

fi


في هذا البرنامج النصي ، نحدد ما إذا كانت قيمة العدد الصحيح INT تقع بين قيم MIN_VAL و MAX_VAL. يتم تنفيذ ذلك عن طريق استخدام واحد لـ [[]]، والذي يتضمن تعبيرين مفصولين بامتداد && المشغل أو العامل. كان بإمكاننا أيضًا ترميز هذا باستخدام تجربه بالعربي:


if [ $ INT -ge $ MIN_VAL -a $ INT -le $ MAX_VAL ]؛ ثم صدى "$ INT يقع في حدود $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT خارج النطاق."

fi

if [ $ INT -ge $ MIN_VAL -a $ INT -le $ MAX_VAL ]؛ ثم صدى "$ INT يقع في حدود $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT خارج النطاق."

fi


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



#! / بن / باش


# test-صحيح 4: تحديد ما إذا كان العدد الصحيح خارج

# نطاق محدد من القيم.


MIN_VAL = 1 MAX_VAL = 100


ذكاء = 50


إذا [["$ INT" = ~ ^ -؟ [0-9] + $]] ؛ من ثم

لو [[ ! (INT -ge MIN_VAL && INT -le MAX_VAL)]] ؛ ثم صدى "$ INT خارج $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT في النطاق."

#! / بن / باش


# test-صحيح 4: تحديد ما إذا كان العدد الصحيح خارج

# نطاق محدد من القيم.


MIN_VAL = 1 MAX_VAL = 100


ذكاء = 50


إذا [["$ INT" = ~ ^ -؟ [0-9] + $]] ؛ من ثم

لو [[ ! (INT -ge MIN_VAL && INT -le MAX_VAL)]] ؛ ثم صدى "$ INT خارج $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT في النطاق."



صدى "INT ليس عددًا صحيحًا." > & 2 الخروج 1

fi


صدى "INT ليس عددًا صحيحًا." > & 2 الخروج 1

fi

نقوم أيضًا بتضمين الأقواس حول التعبير ، للتجميع. إذا لم يتم تضمينها ، فإن النفي سينطبق فقط على التعبير الأول وليس على الجمع بينهما. ترميز هذا مع تجربه بالعربي ستتم بهذه الطريقة:


لو [ ! \ ($ INT -ge $ MIN_VAL -a $ INT -le $ MAX_VAL \)] ؛ ثم صدى "$ INT خارج $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT في النطاق."

fi

لو [ ! \ ($ INT -ge $ MIN_VAL -a $ INT -le $ MAX_VAL \)] ؛ ثم صدى "$ INT خارج $ MIN_VAL إلى $ MAX_VAL."

آخر

صدى "$ INT في النطاق."

fi


منذ كل التعبيرات والعوامل المستخدمة من قبل تجربه بالعربي تعامل الصدفة على أنها وسيطات أوامر (على عكس [[]] و (()) ) ، الشخصيات التي لها معنى خاص سحق، مثل <, >, (و )، يجب اقتباسها أو الهروب منها.

صورة

وترى أن تجربه بالعربي و [[]] تفعل الشيء نفسه تقريبًا ، أيهما أفضل؟ تجربه بالعربي هو تقليدي (وجزء من POSIX) ، بينما [[]] خاص بـ سحق. من المهم معرفة كيفية الاستخدام تجربه بالعربي، لأنه يستخدم على نطاق واسع ، ولكن [[]] من الواضح أنه أكثر فائدة وأسهل في البرمجة ، لذا فهو مفضل للنصوص الحديثة.


قابلية النقل هي Hobgoblin للعقول الصغيرة

إذا تحدثت إلى أشخاص "حقيقيين" في نظام Unix ، فستكتشف سريعًا أن الكثير منهم لا يحبون Linux كثيرًا. إنهم يعتبرونه نجسًا ونجسًا. أحد مبادئ مستخدمي Unix هو أن كل شيء يجب أن يكون "محمولًا". هذا يعني أن أي برنامج نصي تكتبه يجب أن يكون قادرًا على العمل دون تغيير على أي نظام يشبه يونكس.

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

لكن قابلية النقل لها جانب سلبي خطير. يمنع التقدم. إنها تتطلب أن تتم الأشياء دائمًا باستخدام تقنيات "القاسم المشترك الأدنى". في حالة برمجة shell ، فهذا يعني جعل كل شيء متوافقًا مع sh، قذيفة بورن الأصلية.



صورة

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

أدوات جنو ، مثل سحق، ليس لديها مثل هذه القيود. إنها تشجع على النقل من خلال دعم المعايير وبكونها متاحة عالميًا. يمكنك تثبيت ملفات سحق وأدوات جنو الأخرى تقريبًا على أي نوع من الأنظمة ، حتى Windows ، بدون تكلفة. لذلك لا تتردد في استخدام جميع ميزات سحق. انها في الحقيقة المحمولة.


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