|
إلى آمن لنا المفاهيم سوف نتعلم أداتين مفيدتين للغاية للبرمجة التي تعمل بشكل مثالي في Bash. تعلم كيف تبدع وظائف و حدد خطوط الأنابيب قد يبدو معقدًا في البداية ، لكن بعد ذلك سنرى ما هو هائل utilidad التي يقدمونها لنا. |
أنابيب
على وجه التحديد ، وبدون أخذ الكثير من المنعطفات ، فإن خط الأنابيب هو طريقة تسمح بتوجيه مخرجات إحدى العمليات كمدخل لأخرى ، مما يسمح بسلسلة من المزايا ، مثل تقليل سطور الكود ، والاستغناء عن متغيرات التخزين لتحقيق النتائج وتحسين كفاءة النص.
يتم التعرف على الأنبوب بشكل عام من خلال الرمز | يسمح بتسلسل التعبيرات ؛ على الرغم من استخدامه افتراضيًا ، إلا أن هناك طرقًا أخرى لإنشاء الأنابيب.
مثال: طباعة رسائل kernel الأخيرة
يسمح لك #dmesg بمشاهدة رسائل kernel الأخيرة وبرامج التشغيل المحملة # أثناء تمهيد النظام ؛ يطبع tail الأجزاء الأخيرة من ملف أو # أمر
dmesg | ذيل
على الرغم من أنها يمكن أن تكون معقدة بقدر ما نريد ، إلا أن الهيكل الأساسي لخط الأنابيب يسمح باستخدام نتيجة أمر واحد كمدخل للأمر التالي ، والذي يمكن أن يوفر مدخلات لأمر جديد إذا واصلنا إضافة أنابيب متتالية.
وظائف
الدالات هي مجموعة من العبارات التي يتم تجميعها معًا بحيث يمكن تنفيذها عدة مرات دون الحاجة إلى إعادة كتابتها. إنه مكافئ للاعتقاد أنه عندما نتعلم طهي نوع من الطعام سنكتب وصفته على ورقة ، وفي كل مرة نريد طهي ذلك الطعام نستشير الوصفة بدلاً من إعادة كتابة ورقة جديدة بنفس الوصفة.
ربما يكون أهم شيء في الوظائف هو إمكانية تمرير المعلمات والبيانات التي ستستخدمها لمعالجتها وإنشاء مخرجات. هيكلها على النحو التالي:
اسم الوظيفة الوظيفة {
العمليات
}
مثال: وظيفة تُظهر الخدمات التي تعمل على بروتوكول tcp. يمكننا أيضًا معرفة كيفية تطبيق المزيد من الأنابيب.
# نحدد اسم الوظيفة ، يمكن أن يكون الاسم الذي نحب.
وظيفة services_tcp {
#cat يتسلسل ويعرض محتويات مجلد / etc / services ، وهو # يحتوي على جميع الخدمات مع المنافذ المرتبطة بها.
#the grep الأول يأخذ القائمة ويزيل التعليقات ، مع –v نعكس النتيجة
يعرض #the grep الثاني فقط تلك المتعلقة بـ tcp
القط / الخ / الخدمات | grep –v "^ #" | grep tcp
}
عندما نحتاج إلى تنفيذ هذه الوظيفة ، علينا فقط تسميتها باسمها:
tcp_services
في هذه الحالة يعمل بدون معلمات ؛ في حالة وجودها ، يجب أن نضيفها حتى تعمل الوظيفة بشكل صحيح ، وإلا فلن تعمل الوظيفة بشكل صحيح. يسمح استخدام الإرجاع للدالة بإرجاع قيمة كنتيجة للعملية.
مثال: تعمل مع معلمات الإدخال التي تحسب مجموع رقمين.
#! / بن / باش
مجموع الوظيفة ()
{
# with let يمكننا تنفيذ العملية داخل علامات الاقتباس
السماح "النتيجة = 1 دولار + 2 دولار"
#return يسمح بإرجاع قيمة العدد الصحيح. بمجرد تنفيذ العائد ، سيتم إيداع القيمة داخل المتغير $؟
إرجاع نتيجة $؛
}
# يتم استدعاء دالة sum ونمرر معلمتين إدخال.
أضف 2 3
# يطبع قيمة $؟ مع تقييم الصدى للقيمة الفعلية للمتغير في عروض الأسعار
صدى -e "النتيجة = $؟" ؛