برنامج Bash Scripting للمبتدئين

Bash Scripting Tutorial



لغة الأوامر الافتراضية في Linux هي Bash script. نحتاج إلى تشغيل العديد من الأوامر في Linux بشكل يومي لأغراض عديدة. يمكن أتمتة هذه المهام اليومية باستخدام برنامج نصي باش. يمكن لأي مستخدم تعلم لغة البرمجة النصية هذه بسهولة وبسرعة. إذا كنت جديدًا في برمجة bash ، فهذا البرنامج التعليمي يناسبك.

محتويات:

  1. تعليقات
  2. صدى الأوامر
  3. المتغيرات
  4. عبارة شرطية
  5. الحلقات
  6. المهام
  7. استدعاء البرامج في نص
  8. إنشاء القوائم
  9. معالجة سطر الأوامر
  10. علم الحساب
  11. التلاعب بالسلسلة
  12. إرجاع رموز الإرجاع من نص برمجي والتقاط نص برمجي آخر
  13. القراءة والكتابة في الملفات
  14. أنابيب

تعليقات

تعد إضافة التعليقات مع الكود جزءًا أساسيًا من أي لغة برمجة. لم يتم تحليل التعليقات مع البرنامج النصي في وقت التنفيذ. يمكن للقارئ فهم أي رمز بشكل صحيح إذا تم التعليق على الكود جيدًا. يمكنك إضافة تعليق بعدة طرق في برنامج bash النصي. يوضح هذا الجزء كيف يمكنك إضافة تعليقات من سطر واحد ومتعدد الأسطر في نص bash. قم بإنشاء ملف bash بالبرنامج النصي التالي لمعرفة استخدام تعليق bash. هنا ، يتم استخدام الرمز '#' لإضافة تعليق من سطر واحد والاقتباس الفردي (') مع': 'يُستخدم لإضافة تعليقات متعددة الأسطر.







bash_comment.sh



#!/bin/bash
# خذ رقمًا كمدخل
رما - طرد - قذف 'أدخل رقما'
اقرأإلى
:'
تحقق من رقم الإدخال هو
أقل من 10 أو أكبر من 10 أو يساوي 10
'

لو [[ $ أ -lt 10 ]]
من ثم
رما - طرد - قذف 'الرقم أقل من 10'
أليف [[ $ أ -Gt 10 ]]
من ثم
رما - طرد - قذف 'الرقم أكبر من 10'
آخر
رما - طرد - قذف 'الرقم يساوي 10'
يكون

انتاج:



قم بتشغيل البرنامج النصي.





$سحقbash_comment.sh

هنا ، يتم تنفيذ البرنامج النصي لثلاث مرات بقيمة الإدخال 3 و 10 و 90. سيظهر الإخراج التالي.



إذا كنت تريد معرفة المزيد عن تعليقات bash ، فيمكنك التحقق هذا البرنامج التعليمي .

اذهب إلى الأعلى

أمر الصدى

يُستخدم الأمر `echo` في bash لطباعة الإخراج في الجهاز. يمكن استخدام خيارات متنوعة مع أمر echo في bash لطباعة المخرجات بطرق مختلفة. قم بإنشاء ملف bash بالبرنامج النصي التالي لمعرفة الاستخدامين البسيطين لأمر `echo`. هنا ، سيطبع أمر echo الأول بيانات نصية بسيطة بسطر جديد وسيقوم أمر echo الثاني بطباعة نص بسيط بدون سطر جديد.

echo_test.sh

#!/bin/bash
# طباعة النص الأول
رما - طرد - قذف 'طباعة نص بسطر جديد'
# طباعة النص الثاني
رما - طرد - قذف 'طباعة نص بدون سطر جديد'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقecho_test.sh

سيظهر الإخراج التالي بعد تنفيذ الأمر أعلاه.

هناك العديد من الاستخدامات الأخرى لأمر 'echo' في bash. يمكنك مراجعة هذا البرنامج التعليمي لمعرفة المزيد عن أمر 'echo'.

اذهب إلى الأعلى

المتغيرات

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

ستعلن الأوامر التالية عن متغير سلسلة مسمى سر بقيمة معينة ثم قم بطباعة قيمة المتغير في المحطة الطرفية.

$سر='أحب برمجة باش'
$رما - طرد - قذف $ mystr

انتاج:

قم بإنشاء ملف bash بالنص التالي. يتم الإعلان عن متغيرين هنا. وهذه هي $ أ و ب . إذا كانت قيمة الإدخال المخزنة في $ أ يساوي ب ثم الرسالة ، الأرقام متساوية ستتم طباعتها خلاف ذلك الأرقام ليست متساوية ستتم طباعتها.

var.sh

#!/bin/bash
رما - طرد - قذف 'أدخل رقما'
اقرأإلى
ب=100
لو [[ $ أ -مكافئ ب ]]
من ثم
رما - طرد - قذف 'الأرقام متساوية'
آخر
رما - طرد - قذف 'الأرقام غير متساوية'
يكون

انتاج:

قم بتشغيل البرنامج النصي.

$سحقvar.sh

يتم تنفيذ الأمر أعلاه لمرتين بالقيمة 56 و 100. سيظهر الإخراج التالي.

إذا كنت تريد معرفة المزيد عن متغيرات bash ، فيمكنك التحقق من ذلك هذا البرنامج التعليمي .

اذهب إلى الأعلى

عبارة شرطية

مثل لغة البرمجة الأخرى ، يمكنك استخدام العبارة الشرطية في bash. ' If-then-else ' و ' قضية تُستخدم عبارات 'بشكل أساسي لتنفيذ عبارات الشرط في أي لغة برمجة. استخدام البيان الشرطي باستخدام 'لو' يتم عرض البيان في هذا القسم من هذا البرنامج التعليمي. قم بإنشاء ملف bash بالبرنامج النصي التالي حيث يتم استخدام العبارة الشرطية. هنا يتم أخذ قيمتين من المستخدم كمدخلات وتخزينها في المتغيرات ، كود $ ، و العمر $ . عبارة 'if' تستخدم للتحقق من قيمة العمر $ أكبر من أو يساوي 18 وقيمة كود $ يكون 1100 . إذا كان كلا الشرطين صحيحين ، فإن الرسالة ، أنت مؤهل لمشاهدة الفيلم ستتم طباعتها خلاف ذلك أنت غير مؤهل لمشاهدة الفيلم ستتم طباعتها.

cond.sh

#!/bin/bash

رما - طرد - قذف 'ادخل رمزك'
اقرأالشفرة
رما - طرد - قذف 'أدخل عمرك'
اقرأسن

لو [[ العمر $ -يعطى 18 && كود $ -مكافئ '1100' ]]
من ثم
رما - طرد - قذف 'أنت مؤهل لمشاهدة الفيلم'
آخر
رما - طرد - قذف 'أنت غير مؤهل لمشاهدة الفيلم'
يكون

انتاج:

قم بتشغيل البرنامج النصي.

$سحقcond.sh

سيظهر الإخراج التالي بعد أخذ قيم إدخال مختلفة. يتم إعطاء 1100 كرمز ويتم إعطاء 5 كعمر للتنفيذ الأول وإذا أعاد الشرط خطأ لهذه القيم. يتم إعطاء 1100 كرمز ويتم إعطاء 45 كعمر للتنفيذ الثاني الذي يعود صحيحًا لشرط if.

إذا كنت تريد معرفة المزيد عن عبارة bash الشرطية ، فيمكنك التحقق من هذا البرنامج التعليمي.

اذهب إلى الأعلى

الحلقات

عندما تحتاج بعض أجزاء البرنامج النصي إلى التنفيذ عدة مرات ، يتم استخدام الحلقة للقيام بالمهمة. يدعم Bash ثلاثة أنواع من إعلان الحلقات مثل اللغات الأخرى. هذه هي الحلقات من أجل ، و while و until. بناءً على متطلبات البرمجة ، يتم استخدام حلقة معينة في البرنامج النصي. يتم عرض استخدامات هذه الأنواع الثلاثة من الحلقات في هذا القسم باستخدام أمثلة بسيطة.

استخدام للحلقة

قم بإنشاء ملف bash بالنص التالي حيث `` لـ` حلقة تستخدم للتكرار. `لـ` تُستخدم الحلقة بشكل أساسي لتكرار قائمة البيانات أو المصفوفة. هنا ، يتم استخدام قائمة بأسماء أيام الأسبوع ويتم تكرار اسم كل يوم من أيام الأسبوع باستخدام حلقة for. 'إذا' يتم استخدام العبارة لطباعة رسالة معينة بناءً على اسم يوم من أيام الأسبوع.

من أجل

# اقرأ اسم يوم من أيام الأسبوع في كل تكرار للحلقة
ليومفيالاثنين الثلاثاء الاربعاء الخميس الجمعة السبت الاحد
فعل

# تحقق من اسم يوم الأسبوع هو الاثنين أو الخميس
لو [[ يوم $=='الإثنين' || يوم $=='يوم الخميس' ]]
من ثم
رما - طرد - قذف 'اجتماع يوميوم $الساعة 9:30 صباحًا '

# تحقق من اسم يوم الأسبوع هو الثلاثاء أو الأربعاء أو الجمعة
أليف [[ يوم $=='يوم الثلاثاء' || يوم $=='الأربعاء' || يوم $=='جمعة' ]]
من ثم
رما - طرد - قذف 'تدريب علىيوم $الساعة 11:00 صباحا '
آخر

# اطبع 'عطلة' للأيام الأخرى
رما - طرد - قذف 'يوم $هي عطلة
يكون
انتهى

انتاج:

قم بتشغيل البرنامج النصي.

$سحقمن أجل

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

إذا كنت تريد معرفة المزيد من استخدام bash for loop ، فيمكنك التحقق من هذا البرنامج التعليمي.

باستخدام حلقة أثناء

قم بإنشاء ملف bash بالنص التالي حيث `` بينما ' حلقة تستخدم للتكرار. سيقوم هذا السيناريو بطباعة تلك الأرقام من 1 إلى 20 والتي هي زوجية وقابلة للقسمة على 5. هنا ، عداد $ يستخدم المتغير للتحكم في تكرار الحلقة وتزداد قيمة هذا المتغير بمقدار 1 في كل تكرار. متي 'إذا' سيعود الشرط صحيحًا ثم يطبع قيمة عداد $ .

#!/bin/bash

# طباعة الرسالة
رما - طرد - قذف 'اطبع الأرقام الزوجية والقابلة للقسمة على 5'

# تهيئة العداد
عداد=1

#Iterate الحلقة حتى قيمة العداد $ أقل من أو تساوي 20
في حين [ عداد $ -ال عشرين ]
فعل

# تحقق من أن عداد $ يقبل القسمة على 2 و 5
لو [[ عداد $٪2-مكافئ 0 && عداد $٪5-مكافئ 0 ]]
من ثم
# طباعة $ عداد بدون سطر جديد
رما - طرد - قذف 'عداد $'
يكون

#Increment $ عداد بمقدار 1
((عداد ++))
انتهى
رما - طرد - قذف 'منتهي'

انتاج:

$سحقwhile.sh

لا يوجد سوى أرقام داخل 1-20 وهي أرقام زوجية وقابلة للقسمة على 5. سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

إذا كنت تريد معرفة المزيد عن استخدام باش ` while` حلقة ثم يمكنك التحقق هذا البرنامج التعليمي .

باستخدام حتى حلقة

قم بإنشاء ملف bash بالنص التالي حيث `` حتى حلقة تستخدم للتكرار. سيقوم هذا البرنامج النصي بطباعة جميع الأرقام الفردية من 0 إلى 20. $ ن متغير يستخدم في هذا البرنامج النصي لتكرار الحلقة.

حتى

#!/bin/bash

#Initialize المتغير ، n
ن=عشرين

# كرر الحلقة حتى تصبح قيمة $ n أكبر من 0
حتى [ $ ن -lt 0 ]
فعل

# تحقق من قيمة n فردية
لو [[ $ ن٪2-Gt 0 ]]
من ثم
رما - طرد - قذف $ ن
يكون

# زيادة قيمة n بمقدار 1
((ن=$ ن-1))
انتهى

انتاج:

قم بتشغيل البرنامج النصي.

$سحقحتى

سيقوم البرنامج النصي بطباعة جميع الأرقام الزوجية من 20 إلى 1. سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

اذهب إلى الأعلى

المهام

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

قم بإنشاء ملف bash باستخدام البرنامج النصي التالي لمعرفة كيفية الإعلان عن الوظائف واستدعائها في برنامج bash النصي. تم الإعلان عن ثلاث وظائف في البرنامج النصي. يتم الإعلان عن الوظيفة الأولى لطباعة رسالة بسيطة ، برمجة باش للمبتدئين . يتم التصريح عن الوظيفة الثانية لتعيين قيمة سلسلة في متغير ، $ return_str هذا سوف يطبع ، تعلم برمجة bash مع LinuxHint بعد استدعاء الوظيفة. يتم الإعلان عن الوظيفة الثالثة لقراءة قيمة الوسيطة كنصف قطر دائرة والتي سيتم توفيرها في وقت استدعاء الوظيفة. هنا، محلي يستخدم لقراءة قيمة الوسيطة. ستحسب هذه الوظيفة مساحة الدائرة بناءً على قيمة نصف القطر باستخدام الصيغة ، πr2 وطباعة قيمة المنطقة المحسوبة.

func.sh

#!/bin/bash

# أعلن وظيفة بسيطة
وظيفةprint_message()
{
رما - طرد - قذف 'برمجة باش للمبتدئين'
}

#Declare a وظيفة لإرجاع قيمة سلسلة
وظيفةret_strdata()
{
#Initialize المتغير مع قيمة السلسلة
return_str=تعلم برمجة bash مع LinuxHint
}

#Declare a وظيفة لقراءة قيمة الوسيطة
وظيفةاحسب_المنطقة()

#Read قيمة الوسيطة التي تم تمريرها
محلي نصف القطر=1 دولار
منطقة= دولار(رما - طرد - قذف نصف قطر دولار*نصف قطر دولار*3.14

# استدعاء الوظيفة لطباعة رسالة بسيطة
print_message

# استدعاء الوظيفة التي ستحدد قيمة سلسلة في متغير
ret_strdata

# اطبع قيمة المتغير
رما - طرد - قذف $ return_str

# اقرأ قيمة نصف القطر
رما - طرد - قذف 'أدخل قيمة نصف القطر'
اقرأالشغل

# استدعاء الدالة مع قيمة نصف القطر
احسب_المنطقة$ راد

انتاج:

قم بتشغيل البرنامج النصي.

$سحقfunc.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي. سيتم طباعة أول سطرين عن طريق استدعاء الوظائف ، print_message () و ret_strdata () . سيتم طباعة السطر الأخير عن طريق استدعاء الوظيفة ، احسب_المنطقة () مع قيمة نصف قطر الإدخال المأخوذة.

إذا كنت تريد معرفة كيفية إرجاع سلسلة من وظيفة bash ، فيمكنك ذلك هذا التعليم ال.

اذهب إلى الأعلى

استدعاء البرامج في نص

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

add.sh

#!/bin/bash
إلى=60
ب=40
((نتيجة=$ أ+ب))
رما - طرد - قذف 'إضافة$ أ+ب=نتيجة $'

subract.sh

#!/bin/bash
إلى=1 دولار
ب=2 دولار
((نتيجة=$ أ-ب))
رما - طرد - قذف طرح$ أ-ب=نتيجة $'

ضرب. sh

#!/bin/bash
((نتيجة=1 دولار*2 دولار))
رما - طرد - قذف ضرب $ 1 و $ 2 هونتيجة $'

divide.sh

#!/bin/bash
إلى=1 دولار
ب=2
((نتيجة=$ أ/ب))
رما - طرد - قذف 'تقسيم$ أبواسطةبيكوننتيجة $'

قم بإنشاء ملف bash باسم ، callpro.sh باستخدام البرنامج النصي التالي لاستدعاء ملفات bash المذكورة باستخدام أوامر source و bash و EVAL و exec. يجب عليك تعيين إذن التنفيذ للملفات الأربعة المذكورة أعلاه قبل تشغيل البرنامج النصي التالي. يتم استخدام أمر 'المصدر' للاتصال add.sh ملف. يتم استخدام الأمر `bash` لتنفيذ ملف subtract.sh. يتم استخدام الأمر `EVAL` لتنفيذ ملف multiply.sh. يتم إرسال قيمتي إدخال كوسيطتين لسطر الأوامر لأمر 'التقييم'. الأمر الأخير هو أمر exec الذي يعمل مع المسار المطلق فقط. لهذا ، يتم إعطاء اسم المسار الكامل لملف divide.sh في البرنامج النصي.

callpro.sh

#!/bin/bash
النصي 1='add.sh'
النصي 2='طرح. sh'
النصي 3='ضرب. sh'
النصي 4='/home/fahmida/code/divide.sh'

مصدر '$ script1'

سحق النصي 2 خمسون عشرين

رما - طرد - قذف 'أدخل قيمة'
اقرأإلى
رما - طرد - قذف 'أدخل قيمة ب'
اقرأب
تقييم سحق $ script3 $ أ ب
إكسيك $ script4 30

انتاج:

قم بتشغيل البرنامج النصي.

$سحقcallpro.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

اذهب إلى الأعلى

إنشاء القوائم

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

menu.sh

#!/bin/bash

# طباعة رسالة للمستخدم
رما - طرد - قذف اختر لغتك المفضلة

# تحديد قائمة عنصر القائمة
تحديدلغةفيج# خروج Java PHP Python Bash
فعل
# طباعة القيمة المحددة
لو [[ اللغة $=='مخرج' ]]
من ثم
خروج 0
آخر
رما - طرد - قذف اللغة المختارة هياللغة $'
يكون
انتهى

انتاج:

قم بتشغيل البرنامج النصي.

$سحقmenu.sh

وفقًا للإخراج التالي ، قام المستخدم بالضغط على 3 لأول مرة لطباعة PHP والضغط على 6 للمرة الثانية التي انتهت من البرنامج النصي.

إذا كنت تريد معرفة المزيد عن إنشاء قائمة bash باستخدام 'تحديد' ، فيمكنك زيارة هذا البرنامج التعليمي.

اذهب إلى الأعلى

معالجة سطر الأوامر

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

قم بإنشاء ملف bash بالبرنامج النصي التالي لمعرفة استخدام قراءة قيمة وسيطة سطر الأوامر. سيقرأ هذا البرنامج النصي ثلاث وسائط سطر أوامر سيتم تخزينها في المتغيرات ، $ operand1 و $ operand2 و $ المشغل. لتنفيذ البرنامج النصي بشكل صحيح ، يجب أن تكون قيم الوسيطة الأولى والثالثة هي الرقم ويجب أن تكون قيمة الوسيطة الثانية أيًا من العوامل الحسابية الأربعة ('+' ، '-' ، '/' ، 'x'). لو سيتحقق البيان من قيمة المشغل $ ويقوم بالعملية بناءً على عامل التشغيل ويطبع القيمة.

cl1.sh

#!/bin/bash

# طباعة متغيرات الوسيطة
رما - طرد - قذف 'قيم الوسيطة هي: $ 1 $ 2 $ 3'

# تخزين قيم الوسيطة
معامل 1=1 دولار
المعامل 2=3 دولارات
المشغل أو العامل=2 دولار

#Check قيمة وسيطة الأمر الثاني لإجراء العملية الحسابية
لو [[ عامل التشغيل=='+' ]]
من ثم
((نتيجة=معامل 1+معامل 2))
أليف [[ عامل التشغيل=='-' ]]
من ثم
((نتيجة=معامل 1-معامل 2))
أليف [[ عامل التشغيل=='x' ]]
من ثم
((نتيجة=معامل 1*معامل 2))
أليف [[ عامل التشغيل=='/' ]]
من ثم

((نتيجة=معامل 1/معامل 2))
يكون

# طباعة النتيجة
رما - طرد - قذف النتيجة =نتيجة $'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقcl1.sh

يتم تنفيذ النص لأربع مرات لأربعة أنواع من العمليات الحسابية. سيظهر الناتج التالي لقيم الوسيطة ، 6 + 3 ، 6 - 3 ، 6 × 3 و 6/3 .

يمكن تمرير قيم الوسيطة باستخدام زوج الاسم والقيمة في bash. قم بإنشاء ملف bash بالبرنامج النصي التالي لإظهار كيفية قراءة قيم الوسيطات بالاسم. سيقرأ البرنامج النصي متغيرين من المتغيرات. تتم طباعة قيم الوسيطات مع الاسم في العبارة الأولى من البرنامج النصي. بعد ذلك ، يتم استخدام حلقة for لتكرار المصفوفة التي تحتوي على قيم وسيطة سطر الأوامر. يتم فصل كل عنصر من عناصر المصفوفة إلى زوج من المفاتيح والقيمة باستخدام الأمر 'cut'. بعد ذلك ، يتم استخدام بيان الحالة لطباعة رسالة معينة بناءً على قيمة المفتاح.

cl2.sh

#! /صباحا/سحق

# طباعة متغيرات الوسيطة
رما - طرد - قذف 'قيم الوسيطة هي: $ 1 $ 2'

# اقرأ كل وسيطة على حدة باستخدام حلقة for
لغاضبفي '[بريد إلكتروني محمي]'
فعل

# اسم وسيطة منفصلة وقيمتها
مفتاح= دولار(رما - طرد - قذف $ أرج | يقطع -f1 =)
القيمة= دولار(رما - طرد - قذف $ أرج | يقطع -f2 =)

# طباعة رسالة بناءً على اسم الوسيطة
قضية مفتاح $ في
اسم) رما - طرد - قذف اسم الطالب =قيمة دولار'؛؛
علامة) رما - طرد - قذف 'حصل على علامة =قيمة دولار' ؛؛
*)
esac
انتهى

انتاج:

قم بتشغيل البرنامج النصي باستخدام وسيطات سطر الأوامر التالية.

$سحقcl2.shاسم= عبير حسينعلامة=90

يتم توفير وسيطين لسطر الأوامر في الأوامر أعلاه. وهذه هي name = عبير حسين و علامة = 90 . اسم و علامات مفصولة بالبرنامج النصي ويتم طباعة قيمتين بعد تنسيق الإخراج.

معالجة وسيطات سطر الأوامر باستخدام getopts لم تتم مناقشة الوظيفة في هذا البرنامج التعليمي. إذا كنت تريد أن تعرف عن معالجة سطر الأوامر باستخدام getopts وظيفة ثم يمكنك زيارة هذا البرنامج التعليمي .

اذهب إلى الأعلى

علم الحساب

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

arith.sh

#!/bin/bash
# احسب المجموع
نتيجة= دولار((خمسون+25))
# طباعة قيمة الجمع
رما - طرد - قذف مجموع =نتيجة $'

# احسب القسمة
نتيجة= دولار((خمسون/25))
# طباعة قيمة القسمة
رما - طرد - قذف 'الانقسام =نتيجة $'

# قم بتعيين قيمة لـ N
ن=10
# القيام بالزيادة المسبقة
((--ن))
# طباعة قيمة N
رما - طرد - قذف القيمة بعد التناقص =$ N'

# باستخدام عامل الاختزال
((N + =10 ))
# طباعة قيمة N
رما - طرد - قذف القيمة بعد إضافة 10 =$ N'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقarith.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

تتم جميع العمليات الحسابية باستخدام أقواس مزدوجة في هذا البرنامج النصي أعلاه. لكن يمكنك استخدام يترك '،' إكسبر ' و ' قبل الميلاد 'أمر بإجراء العملية الحسابية في باش. إذا كنت تريد معرفة المزيد عن هذه الأوامر لإجراء عمليات حسابية bash ، فيمكنك زيارة هذا البرنامج التعليمي.

اذهب إلى الأعلى

التلاعب بالسلسلة

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

سلسلة متسلسلة

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

concat.sh

#!/bin/bash

#Initialize أول متغير سلسلة
سلسلة 1='انا يعجبني '
#Initialize متغير السلسلة الثانية
سلسلة 2='برمجة باش'
# طباعة بعد دمج كلا الخيطين
رما - طرد - قذف 'سلسلة 1 $سلسلة 2 $'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقconcat.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

يمكنك معرفة المزيد عن تسلسل السلسلة من هذا البرنامج التعليمي.

اذهب إلى الأعلى

مقارنة الخيط

يستخدم Bash أنواعًا مختلفة من العوامل لمقارنة بيانات السلسلة. قم بإنشاء ملف bash بالبرنامج النصي التالي لإظهار كيفية مقارنة بيانات سلسلتين. يتم أخذ قيمة السلسلة كمدخلات في البرنامج النصي يتم مقارنتها بسلسلة أخرى. إذا كانت القيمة تتطابق مع رسالة ، أنت تحب بايثون ستتم طباعتها خلاف ذلك أنت تحب PERL ستتم طباعتها.

قارن. sh

#!/bin/bash
رما - طرد - قذفأدخل أي قيمة سلسلة
اقرأنص

#Check بيانات الإدخال تعادل Python
لو [ نص $=='بايثون' ]؛من ثم
رما - طرد - قذف 'أنت تحب بايثون.'
آخر
رما - طرد - قذف 'أنت تحب PERL'
يكون

انتاج:

قم بتشغيل البرنامج النصي.

$سحققارن. sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي حيث تكون قيمة الإدخال هي 'PERL'.

يمكنك معرفة المزيد عن مقارنة السلسلة من هذا البرنامج التعليمي .

سلسلة الانقسام

لا يحتوي Bash على أي وظيفة تقسيم مضمنة لتقسيم بيانات السلسلة. يمكن تقسيم بيانات السلسلة بعدة طرق في bash بناءً على أنواع مختلفة من المحددات. قم بإنشاء ملف bash باستخدام البرنامج النصي التالي لتوضيح كيفية تقسيم بيانات السلسلة إلى bash. يتم أخذ قيمة السلسلة كمدخلات. هذا البرنامج النصي سوف يقسم قيمة نص $ على أساس الفضاء. هنا ، IFS متغير يستخدم لتعيين المحدد. 'قراءة' يتم استخدام الأمر هنا لتقسيم قيمة النص وتخزين القيم في مصفوفة. ل حلقة تستخدم لتكرار المصفوفة وطباعة قيمة كل عنصر.

انقسام

#!/bin/bash
# أدخل قيمة سلسلة
رما - طرد - قذفأدخل قيمة سلسلة
اقرأنص
# تعيين المحدد
IFS='
# قسّم قيمة نص $ إلى مصفوفة بناءً على محدد المسافة
اقرأ -إلىarr<<< 'نص $'
# طباعة كل قيمة من قيمة المصفوفة
لالقيمةفي '$ {arr [@]}'؛
فعل
printf 'قيمة دولارن'
انتهى

انتاج:

قم بتشغيل البرنامج النصي.

$سحقانقسام

سيظهر الإخراج التالي بعد أخذ الإدخال ، تعلم برمجة باش . قيمة الإدخال هذه هي نص من ثلاث كلمات. إذن ، الخيط مقسم إلى ثلاثة أجزاء.

يمكنك معرفة المزيد عن مقارنة السلسلة من هذا البرنامج التعليمي .

تغيير حالة السلسلة

تحتوي معظم لغات البرمجة النصية على وظائف مدمجة لتغيير حالة بيانات السلسلة. لكن حالة بيانات السلسلة يمكن تغييرها في bash باستخدام `tr` الأمر أو باستخدام ': العلوي' و ':أدنى' الكلمات الدالة. قم بإنشاء ملف bash بالنص التالي لمعرفة طرق تغيير الحالة في bash. هنا ، يتم تحويل بيانات السلسلة الأولى إلى أحرف كبيرة باستخدام '^ ^' يتم تحويل السلسلة الثانية إلى أحرف صغيرة باستخدام `tr` أمر. `tr` سيبحث الأمر في كل الأحرف الكبيرة في السلسلة ويحول الأحرف إلى أحرف صغيرة.

حالة

#!/bin/bash

#Initialize بيانات السلسلة الأولى
النص 1='[بريد إلكتروني محمي]'

# اطبع قيمة $ text1 بتحويل كل الأحرف إلى أحرف كبيرة
رما - طرد - قذف $ {email ^^}

# تهيئة بيانات السلسلة الثانية
النص 2= 'أساسيات برمجة Bash'

# اطبع قيمة $ text2 بتحويل كل الأحرف الكبيرة إلى الأحرف الصغيرة
رما - طرد - قذف $ text2 | NS [: علوي:] [:أدنى:]

انتاج:

قم بتشغيل البرنامج النصي.

$سحقحالة

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

يمكنك معرفة المزيد عن مقارنة السلسلة من هذا البرنامج التعليمي .

اذهب إلى الأعلى

قراءة بيانات السلسلة من خلال الحلقة

تعمل بيانات السلسلة كمصفوفة أحرف لأي لغة برمجة. كيف ' ل يمكن استخدام حلقة 'لقراءة بيانات السلسلة في bash في هذا القسم. قم بإنشاء ملف أساسي بالبرنامج النصي التالي لقراءة كل جزء من قيمة السلسلة باستخدام حلقة for.

readstr.sh

#!/bin/bas
# اقرأ كل كلمة من النص باستخدام حلقة for
لالقيمةفيبرمجة باشلالمبتدئين
فعل
رما - طرد - قذف قيمة دولار
انتهى

انتاج:

قم بتشغيل البرنامج النصي.

$سحقreadstr.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

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

اذهب إلى الأعلى

إرجاع رموز الإرجاع من نص برمجي والتقاط نص برمجي آخر

يمكن لأحد البرامج النصية bash التقاط رموز الإرجاع من نص برمجي آخر عن طريق استدعاء البرنامج النصي واستخدامه '$؟' لقراءة القيمة المعادة. لنفترض أن ملف bash اسمه first.sh إرجاع رمز بعد التنفيذ. قم بإنشاء ملف bash آخر باسم second.sh وأضف البرنامج النصي التالي لالتقاط القيمة المعادة والقيام ببعض المهام الأخرى. رمز كلا الملفين معطى أدناه. first.sh سيتم استدعاء الملف من second.sh ملف في بداية البرنامج النصي. first.sh سيعيد رمز الخروج بناءً على قيمة الإدخال. second.sh سوف يمسك الكود بواسطة '$؟' وقارن مع 1. إذا كانت كلتا القيمتين متساويتين ، فسيتم طباعتها ، رقم الإدخال أكبر من 100 ، وإلا فإنها ستطبع ، رقم الإدخال أقل من أو يساوي 100 .

first.sh

#!/bin/bash

رما - طرد - قذف 'أدخل قيمة رقمية'
اقرأن

# تحقق من قيمة الإدخال أقل من أو تساوي 100 أم لا
لو [[ $ ن -ال 100 ]]
من ثم
خروج 0
آخر
خروج 1
يكون

second.sh

#! /bin/bash

# قم بتنفيذ الملف ، first.sh
سحق 'first.sh'

# تحقق من أن رمز الإرجاع يساوي 1 أم لا
لو [ -مكافئ 1 ]
من ثم
رما - طرد - قذف 'رقم الإدخال أكبر من 100'
آخر
رما - طرد - قذف 'رقم الإدخال أقل من أو يساوي 100'
يكون

انتاج:

قم بتشغيل البرنامج النصي.

$سحقsecond.sh

سيظهر الإخراج التالي عندما يتم تنفيذ البرنامج النصي بواسطة 55 و 110 لمرتين.

اذهب إلى الأعلى

القراءة والكتابة في الملفات

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

قراءة الملف في bash

أنشئ ملف bash بالبرنامج النصي التالي لقراءة ملف موجود باسم ' Hardware.txt '. محتوى هذا الملف معطى أدناه. في البرنامج النصي ، تتم قراءة محتوى الملف بالكامل بواسطة 'قطة' الأمر الأول والتالي ، بينما يتم استخدام حلقة أثناء قراءة الملف سطرًا بسطر.

Hardware.txt

مراقب
لوحة المفاتيح
الفأر
الماسح الضوئي
طابعة

readfile.sh

#!/bin/bash

رما - طرد - قذف 'قراءة الملف باستخدام أمر القط'

# اقرأ محتوى الملف باستخدام أمر `cat`
المحتوى='قطHardware.txt'
رما - طرد - قذف محتوى $

رما - طرد - قذف 'قراءة ملف سطر بسطر باستخدام حلقة'

# تعيين اسم الملف
اسم الملف='Hardware.txt'

# سيتم قراءة كل سطر من الملف بواسطة كل تكرار للحلقة
في حين اقرأخط؛
فعل
# طباعة الخط
رما - طرد - قذف سطر $
انتهى<اسم الملف $

انتاج:

قم بتشغيل الأوامر التالية.

$قطHardware.txt
$سحقreadfile.sh

هنا ، سيطبع الأمر الأول محتوى الملف ، Hardware.txt بدون تشغيل أي نصوص bash وسيعمل الأمر الثاني على تشغيل البرنامج النصي لـ readfile.sh وطباعة محتوى الملف مرتين باستخدام 'قطة' الأمر و 'قراءة' الأمر مع حلقة أثناء. يمكنك زيارة هذا الدورة التعليمية لمعرفة المزيد عن قراءة الملف سطرا بسطر.

كتابة الملف في bash

قم بإنشاء ملف bash بالبرنامج النصي التالي لكتابة محتوى جديد في ملف جديد وإلحاق البيانات في هذا الملف.

writefile.sh

#!/bin/bash

رما - طرد - قذف 'أدخل نصًا'
# قراءة بيانات السلسلة
اقرأشارع 1
# إضافة بيانات الإدخال إلى الملف لأول مرة
رما - طرد - قذف $ STR1 >test.txt

رما - طرد - قذف 'أدخل نصًا آخر'
# اقرأ بيانات سلسلة أخرى
اقرأstr2
# إضافة بيانات الإدخال في نهاية الملف
رما - طرد - قذف $ STR2 >>test.txt

#Show المحتوى الكامل للملف
رما - طرد - قذف 'قطtest.txt'

انتاج:

قم بتشغيل البرنامج النصي.

$سحقwritefile.sh

سيظهر الإخراج التالي بعد تشغيل البرنامج النصي.

اذهب إلى الأعلى

أنابيب

يتم استخدام الأنابيب لإعادة توجيه أي إخراج أمر إلى إدخال أمر آخر. يمكن استخدامه بين أنواع مختلفة من أوامر bash لتوليد مخرجات محددة. يتم توصيل الإدخال القياسي بالإخراج القياسي في Linux عن طريق الأنابيب. تحتاج إلى ضبط الأمر بالتسلسل باستخدام رمز الأنبوب (|) للحصول على الإخراج المطلوب. يمكن تنفيذ أمرين أو أكثر معًا في أمر واحد باستخدام الأنبوب. يجب عليك تنفيذ أوامر متعددة في عدة أسطر بدون أنبوب للقيام بنفس المهمة. لذلك ، فإن استخدام الأنبوب مفيد جدًا للقيام بالعديد من أنواع المهام في شكل قصير.

بناء الجملة:

أمر 1|أمر 2|...

هنا ، سيتم تمرير إخراج الأمر 1 كمدخلات الأمر 2.

يتم تنفيذ نفس نوع المهمة باستخدام أنبوب وبدون أنبوب في الجزء التالي من هذا القسم. افترض وجود ملف نصي اسمه marks.txt بالبيانات التالية.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

يجب عليك فرز بيانات الملف ومعرفة وطباعة جميع إدخالات اسم الطالب 'K نعم ' . يمكنك القيام بهذه المهمة عن طريق تشغيل أوامر متعددة دون استخدام أنبوب يظهر في القسم التالي. يجب تشغيل الأوامر التالية للحصول على الإخراج المطلوب. سيقوم الأمر الأول بفرز الملف. سيبحث الأمر الثاني في الإدخال 'K نعم ' باستخدام ' سيطرة `أمر وتخزين الإخراج في ملف temp.txt ملف. الأمر الثالث سيحسب مجموع سطور ملف temp.txt ملف باستخدام 'مرحاض' أمر.

$نوعmarks.txt
$سيطرة 'كيا'marks.txt>temp.txt
$مرحاض -الtemp.txt

انتاج:

يوجد إدخالان للطالب ، 'Keya' في الملف. لذلك بعد تشغيل الأوامر المذكورة أعلاه ، سيظهر الإخراج التالي.

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

$نوعmarks.txt| سيطرة 'كيا' | مرحاض -ال

انتاج:

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

اذهب إلى الأعلى

استنتاج:

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