البرمجة في باش - الجزء الأول

إلى آمن لنا المفاهيم سوف نتعلم أداتين مفيدتين للغاية للبرمجة التي تعمل بشكل مثالي في 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 "النتيجة = $؟" ؛

<< انتقل إلى الجزء السابق

شكرا لك خوان كارلوس أورتيز!


7 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   مؤشر النيل قال

    لست متأكدًا ، لكن عبارة الإرجاع للوظائف تعمل فقط على إرجاع عدد صحيح بين 0 و 255 ، مثل أكواد الخطأ الخاصة بـ "exit" ، بشكل عام 0 إذا كان كل شيء على ما يرام ورقم آخر للحالات الأخرى. على الرغم من أن هذا يعمل في المثال ، لا أعتقد أنه من الممارسات الجيدة إرجاع النتيجة مع العودة.
    هناك أنا أقول هراء ، أليس كذلك! عين! ها!

  2.   Juank قال

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

  3.   أبيل س. ماونت بيج قال

    هذا صحيح ، لحل هذه المشكلة يمكنك استخدام الأمر bc ، في دالة الجمع يمكنك استخدام: result = `echo $ 1 + $ 2 | BC -ql`

  4.   لويس ميغيل قال

    جيدة،

    أود أن أعرف أين يمكنني حفظ ملفات bash لتشغيل النظام على نطاق واسع وهذا ليس دليل bin ، ولكن يمكن أن يكون موطنًا للنسخ الاحتياطي.

    الشكر والتحيات.

  5.   خواكين قال

    شكرا جزيلا لك ، أنا أبدأ بالسيناريوهات ، والحقيقة هي أن هذا مفيد للغاية ، فأنت طيب للغاية لمشاركة معرفتك!
    تحياتي

    1.    دعنا نستخدم لينكس قال

      شكرا! عناق!
      بول

  6.   CRISTHIAN قال

    خطأ لغوي، وغير متوقع
    لقد تلقيت خطأ عند محاولة تشغيل المثال ، قمت بنسخه بنفس الطريقة تمامًا

    ما يمكن أن يكون؟ أنا على أوبونتو 14.10