باش سوبشلس

Bash Swbshls



في بعض الأحيان ، يتطلب منك تشغيل أمر أو نصوص أو أكثر في الخلفية. يمكن القيام بهذه المهمة عن طريق كتابة جميع الأوامر أو البرامج النصية في ملف نصي وتنفيذ الملف باستخدام علامة العطف (&) أو تنفيذ الأوامر أو البرامج النصية في المجموعة الفرعية من الصدفة الحالية. يمكن استخدام المجموعة الفرعية لتنفيذ أوامر أو نصوص متعددة من خلال إرفاقها بـ $ () أو backticks (`). يتم عرض طرق استخدام Bash subshell في هذا البرنامج التعليمي.

أمثلة مختلفة للقشرة الفرعية

يتم عرض الطرق المختلفة لتنفيذ البرنامج النصي في المجموعة الفرعية في هذا الجزء من البرنامج التعليمي.

مثال 1: تنفيذ الجملة الفرعية باستخدام الاقتباس الفردي والاقتباس المزدوج

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







#! / بن / باش

# اطبع الأمر `date` في المجموعة الفرعية

صدى صوت 'اليوم هو 'التاريخ' '

# تعريف متغير سلسلة

سترفال = 'باش سوبشيل'

# اطبع المتغير في المجموعة الفرعية باستخدام علامات الاقتباس المفردة

صدى صوت 'ناتج علامات الاقتباس المفردة:' '$ (echo $ strVal)'

# اطبع المتغير في المجموعة الفرعية باستخدام علامات الاقتباس المزدوجة

صدى صوت 'ناتج علامات الاقتباس المزدوجة:' ' $ (echo $ strVal) '

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. تتم طباعة البرنامج النصي الفرعي كسلسلة عندما يتم إرفاقه بعلامات اقتباس مفردة. يتم تنفيذ البرنامج النصي الفرعي عندما يكون محاطًا بعلامات اقتباس مزدوجة:





مثال 2: البحث في جميع الملفات ذات الامتداد الخاص باستخدام Subshell

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





#! / بن / باش

صدى صوت 'أدخل اسم امتداد الملف:'

# خذ اسم امتداد الملف الذي سيتم البحث فيه

يقرأ تحويلة

# تحقق من قيمة الإدخال

لو [ [ $ ext == '' ] ] ؛ ثم

# طباعة رسالة خطأ

صدى صوت 'لم يتم إعطاء أي امتداد'.

آخر

صدى صوت 'أسماء الملفات ذات $ ext امتداد:'

# طباعة جميع أسماء الملفات بالامتداد المحدد

صدى صوت ' $ (صدى `ls *. $ ext`) '

يكون

يظهر المخرج التالي بعد تنفيذ البرنامج النصي بإدخال 'txt'. وفقًا للإخراج ، توجد ثلاثة ملفات نصية في الموقع الحالي:



يظهر المخرج التالي بعد تنفيذ البرنامج النصي بقيمة فارغة:

مثال 3: تنفيذ التعبير الحسابي في Subshell

قم بإنشاء ملف Bash بالبرنامج النصي التالي حيث يتم استخدام المتغير الذي يحمل نفس الاسم في الغلاف الرئيسي والقشرة الفرعية. يتم تعريف العملية الحسابية في الغلاف الرئيسي والقشرة الفرعية.

#! / بن / باش

# تعريف متغير shell أصلي

رقم = 10

# اطبع النتيجة بناءً على متغير الغلاف الأصلي

( ( نتيجة = رقم $ + 5 ) )

صدى صوت 'مجموع رقم $ + 5 = نتيجة $ '

#Create متغير فرعي بنفس اسم الصدفة الأصل

( رقم = عشرين ؛ ( ( نتيجة = رقم $ + 10 ) ) ؛ صدى صوت 'مجموع رقم $ + 5 = نتيجة $ ' )

# اطبع النتيجة بناءً على متغير الغلاف الأصلي مرة أخرى

صدى صوت 'مجموع رقم $ + 5 = نتيجة $ '

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. يُظهر الناتج الأول والأخير نتيجة الغلاف الرئيسي. يظهر الإخراج الثاني نتيجة subshell. لا يتم تعديل متغير الغلاف الرئيسي بواسطة متغير المجموعة الفرعية:

مثال 4: تنفيذ أوامر متعددة في Subshell

قم بإنشاء ملف Bash بالبرنامج النصي التالي الذي يرسل إخراج الأمر 'echo' إلى الأمر 'sed' الذي يستبدل قيمة السلسلة المطابقة بسلسلة أخرى. إخراج الأمر 'echo' هو 'JavaScript'. لذلك ، تتم مقارنة هذه القيمة مع 'Java' و 'JavaScript'. إذا تم العثور على تطابق ، يتم استبدال السلاسل المطابقة بسلسلة 'النوع'.

#! / بن / باش

# تحديد قيمة سلسلة

سترفال = 'جافا سكريبت'

# طباعة قيمة السلسلة الأصلية

صدى صوت 'قيمة السلسلة: $ strVal '

# طباعة القيمة الفرعية

صدى صوت 'القيمة الفرعية:'

صدى صوت ' $ (echo $ strVal | sed 's | Java | JavaScript Type |') '

يظهر الإخراج التالي بعد تنفيذ البرنامج النصي. وفقًا للإخراج ، يتم استبدال سلسلة 'Java' بسلسلة 'النوع'. ناتج المجموعة الفرعية هو 'JavaScript TypeScript':


خاتمة

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