30 مقابلة باش سكريبت أسئلة وأجوبة

30 Bash Script Interview Questions



تعد Bash scripting لغة برمجة مفيدة جدًا وقوية تستخدم بشكل أساسي لجعل أي مهمة يدوية آلية. يجب على الباحث عن عمل الذي يريد أن يكون مختبِرًا آليًا أو مبرمجًا أن يواجه بعض الأسئلة الشائعة في المقابلة. توجد أنواع مختلفة من نصوص الشل في لينكس. يعد Bourne Again Shell أو Bash أحد أشهر نصوص الصدفة وأكثرها استخدامًا. تم وصف 30 سؤالًا وإجابات مهمة للمقابلة حول لغة برمجة bash في هذه المقالة للاستعداد للوظيفة.

# 01. ما هو نص باش؟

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







# 02. ما هي مزايا استخدام البرامج النصية باش؟

يتميز سكربت باش بالعديد من المزايا الموضحة أدناه:



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

# 03. اذكر عيوب نصوص باش

بعض عيوب bash script مذكورة أدناه:



  • إنه يعمل بشكل أبطأ من اللغات الأخرى.
  • يمكن أن يؤدي البرنامج النصي غير المناسب إلى إتلاف العملية بأكملها وإنشاء خطأ معقد.
  • إنه غير مناسب لتطوير تطبيق كبير ومعقد.
  • يحتوي على بنية بيانات أقل مقارنة بلغات البرمجة القياسية الأخرى.

# 04. ما أنواع المتغيرات المستخدمة في bash؟

يمكن استخدام نوعين من المتغيرات في نص باش. وهذه هي:

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

'مجموعة' ، 'إنف' و ' printenv يمكن استخدام الأوامر لطباعة قائمة متغيرات النظام.

مثال:





#!/bin/bash
# متغيرات نظام الطباعة

# طباعة اسم غلاف Bash
رما - طرد - قذف دولار باش

# طباعة نسخة باش شل
رما - طرد - قذف BASH_VERSION دولار

# طباعة اسم الدليل الرئيسي
رما - طرد - قذف الصفحة الرئيسية $

المتغير المحدد من قبل المستخدم

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

#!/bin/bash

على واحد=100
رما - طرد - قذف الأسطوانات دولار

# 05. كيف تصرح وتحذف المتغيرات في باش؟

يمكن التصريح عن المتغير في bash حسب نوع البيانات أو بدون نوع البيانات. إذا تم التصريح عن أي متغير bash بدون يعلن الأمر ، فسيتم التعامل مع المتغير كسلسلة. يتم التصريح عن متغير Bash بامتداد يعلن أمر لتحديد نوع بيانات المتغير في إعلان الوقت.



- ص ، -i ، -a ، -A ، -l ، -u ، -t و –X يمكن استخدام الخيارات مع يعلن الأمر للإعلان عن متغير بأنواع بيانات مختلفة.

مثال:

#!/bin/bash

#Declare المتغير بدون أي نوع
على واحد=10

سيتم دمج #Values ​​لكن لن تتم إضافتها
نتيجة=الأسطوانات دولار+عشرين
رما - طرد - قذف نتيجة $

#Declare متغير بنوع عدد صحيح
يعلن -أنا على واحد=10

ستتم إضافة #Values
يعلن -أنا نتيجة= عدد +عشرين
رما - طرد - قذف نتيجة $

غير محدد يتم استخدام الأمر لإزالة أي متغير bash. سيكون المتغير غير قابل للوصول أو غير معرف بعد استخدام غير محدد أمر.

مثال:

#!/bin/bash

ص='تلميح Linux'
رما - طرد - قذف $ شارع
غير محدد $ شارع
رما - طرد - قذف $ شارع

# 06. كيف تضيف تعليقات في سكربت باش؟

يمكن استخدام التعليقات أحادية السطر ومتعددة الأسطر في برنامج bash النصي. ' # 'الرمز يستخدم للتعليق أحادي السطر. '<<’ رمز مع محدد و ':' ذات (') لإضافة تعليق متعدد الأسطر.

مثال:

#!/bin/bash
#Print the text [تعليق من سطر واحد]
رما - طرد - قذف 'برمجة باش'
< احسب المجموع
من رقمين [تعليق متعدد الأسطر]
أضف تعليق

على واحد=25+35
رما - طرد - قذف الأسطوانات دولار
:'
اجمع بين اثنين
بيانات السلسلة [تعليق متعدد الأسطر]
'

سلسلة='أهلا'
رما - طرد - قذف سلسلة $' العالمية'

# 07. كيف يمكنك دمج الجمل في نص باش؟

يمكن دمج قيم السلسلة في bash بطرق مختلفة. عادةً ، يتم تجميع قيم السلسلة عن طريق وضعها معًا ولكن هناك طرق أخرى في bash لدمج بيانات السلسلة.

مثال:

#!/bin/bash
#Initialize المتغيرات
شارع 1='بي أتش بي'
str2='سحق'
str3='بيرل'

# طباعة السلسلة مع الفضاء
رما - طرد - قذف $ STR1 $ STR2 $ STR3

# اجمع كل المتغيرات وقم بتخزينها في متغير آخر
ص='$ STR1و$ STR2و$ STR3'

# امزج بيانات السلسلة الأخرى مع القيمة الحالية للسلسلة
str + ='لغات البرمجة'

# طباعة السلسلة
رما - طرد - قذف $ شارع

# 08. ما هي الأوامر المستخدمة لطباعة الإخراج في bash؟

'صدى' و 'printf' يمكن استخدام الأوامر لطباعة الإخراج في bash. صدى `يتم استخدام الأمر لطباعة الإخراج البسيط و 'printf' يتم استخدام الأمر لطباعة الإخراج المنسق.

مثال:

#!/bin/bash

# طباعة النص
رما - طرد - قذف 'مرحبًا بك في LinuxHint'
موقع='linuxhint.com'
# طباعة النص المنسق
printf '٪ s هو موقع مدونة شائعن' موقع $

# 09. كيف تأخذ المدخلات من Terminal في bash؟

'قراءة' يتم استخدام الأمر في برنامج نصي باش لأخذ المدخلات من المحطة.

مثال:

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

# 10. كيفية استخدام وسيطات سطر الأوامر في bash؟

تتم قراءة وسيطات سطر الأوامر بواسطة 1 دولار ، 2 دولار ، 3 دولارات ... ن المتغيرات. يتم توفير قيم وسيطة سطر الأوامر في المحطة عند تنفيذ البرنامج النصي bash. 1 دولار يستخدم لقراءة الحجة الأولى ، 2 دولار يستخدم لقراءة الوسيطة الثانية وهكذا.

مثال:

#!/bin/bash
# تحقق من أي وسيطة مقدمة أم لا
لو [[ # دولار -مكافئ 0 ]]؛من ثم
رما - طرد - قذف 'لم يتم إعطاء حجة'.
خروج 0
يكون
# تخزين قيمة الوسيطة الأولى
لون=1 دولار
# اطبع الوسيطة بسلسلة أخرى
printf اللون المفضل لديك هو٪ sن' $ اللون

رقم 11. هل باش لغة مكتوبة بشكل ضعيف؟ لماذا ا؟

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

مثال:

#!/bin/bash

# نوع بيانات $ myVar هو سلسلة بشكل افتراضي
myVar=29

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

# قم بتعريف المتغير الصحيح $ number بالقيمة 67
يعلن -أنا عدد=67

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

# تعيين سلسلة البيانات في المتغير الرقمي. سيتم إنشاء السطر التالي
# خطأ في بناء الجملة ولن تتغير قيمة $ number
عدد='أنا أحب باش'
رما - طرد - قذف رقم $

رقم 12. كيف تقرأ الكلمة أو العمود الثاني من كل سطر في الملف؟

يمكن قراءة الكلمة أو العمود الثاني من الملف في برنامج نصي bash باستخدام أوامر bash مختلفة بسهولة ، مثل `awk` و` sed` وما إلى ذلك. 'awk' يظهر في المثال التالي.
مثال: لنفترض أن ملف course.txt يحتوي على المحتوى التالي وقد قمنا بطباعة الكلمة الثانية فقط من كل سطر من هذا الملف.

برمجة جافا CSE201
هيكل البيانات CSE303
CSE408 Unix Programming#!/bin/bash
# سيقوم البرنامج النصي التالي بطباعة الكلمة الثانية من كل سطر من ملف course.txt.
# سينتقل إخراج الأمر cat إلى الأمر awk الذي سيقرأ الكلمة الثانية
# من كل سطر.
رما - طرد - قذف 'قطبالطبع. txt| awk '{print $ 2}''

# 13. كيف تصرح وتصل إلى متغير مصفوفة في باش؟

يتم دعم كل من المصفوفات الرقمية والارتباطية بواسطة برنامج نصي باش. يمكن التصريح عن متغير مصفوفة بأمر إعلان وبدون ذلك. -إلى يتم استخدام الخيار مع أمر التصريح لتعريف مصفوفة رقمية و -إلى يستخدم الخيار مع بيان التصريح لتعريف مصفوفة ترابطية في باش. بدون إعلان الأمر ، يمكن تعريف المصفوفة الرقمية فقط في bash.

مثال:

#!/bin/bash

# قم بتعريف مصفوفة رقمية بسيطة
آر آر 1=(CodeIgniter Laravel ReactJS)

# اطبع قيمة العنصر الأول $ arr1
رما - طرد - قذف $ {arr1 [0] {

# قم بتعريف مصفوفة رقمية باستخدام أمر التصريح
يعلن -إلى arr2=(HTML CSS جافا سكريبت)

# طباعة قيمة العنصر الثاني $ arr2
رما - طرد - قذف $ {arr2 [1]}

# قم بتعريف مصفوفة ترابطية باستخدام بيان التصريح
يعلن -إلى arr3=( [إطار العمل]= Laravel[CMS]= وورد[مكتبة]= مسج)

# طباعة قيمة العنصر الثالث $ arr3
رما - طرد - قذف $ {arr3 [مكتبة]}

يمكن الوصول إلى جميع عناصر المصفوفة باستخدام أي حلقة أو رمز '*' كمؤشر مصفوفة.

# 14. كيف يمكن استخدام الجمل الشرطية في باش؟

العبارة الشرطية الأكثر شيوعًا في معظم لغات البرمجة هي if-elseif-else بيان. بناء جملة إذا-elseif- آخر البيان في bash يختلف قليلاً عن لغات البرمجة الأخرى. 'لو' يمكن التصريح عن العبارة بطريقتين في نص bash وكل نوع من أنواع 'لو' يجب إغلاق الكتلة بـ 'يكون' . 'لو' يمكن تعريف العبارة من خلال الأقواس الثالثة أو الأقواس الأولى مثل لغات البرمجة الأخرى.

بناء الجملة:
إلى.

لو [شرط]؛
من ثم
صياغات
يكون

ب.

لو [شرط]؛من ثم
صياغات1
آخر
بيان2
يكون

ج.

لو [شرط]؛من ثم
بيان1
أليف[شرط]؛من ثم
بيان2
….
آخر
بيان
يكون

مثال:

#!/bin/bash

# قم بتعيين قيمة لـ $ n
ن=30
# تحقق من $ n أكبر من 100 أم لا
لو [ $ ن -Gt 100 ]؛من ثم
رما - طرد - قذف '$ نأقل من 100 دقيقة
# تحقق من معرف $ n أكبر من 50 أم لا
أليف [ $ ن -Gt خمسون ]؛من ثم
رما - طرد - قذف '$ نأقل من 50 دقيقة
آخر
رما - طرد - قذف '$ نأقل من 50 دقيقة
يكون

#15. كيف تقارن القيم في باش؟

يمكن استخدام ستة أنواع من عوامل المقارنة في bash لمقارنة القيم. هناك طريقتان لاستخدام هذه العوامل في bash اعتمادًا على نوع البيانات. هذه مذكورة أدناه.

مقارنة السلاسل عدد صحيح كوماريسون وصف
== -مكافئ يتم استخدامه للتحقق من المساواة
! = -ولد يتم استخدامه للتحقق من عدم المساواة
< -lt يتم استخدامه للتحقق من أن القيمة الأولى أقل من القيمة الثانية أم لا
> -Gt يتم استخدامه للتحقق من أن القيمة الأولى أكبر من القيمة الثانية أم لا
<= -ال يتم استخدامه للتحقق من أن القيمة الأولى أقل من أو تساوي القيمة الثانية أم لا
> = -يعطى يتم استخدامه للتحقق من أن القيمة الأولى أكبر من أو تساوي القيمة الثانية أم لا

مثال:

#!/bin/bash
# تهيئة $ n
ن=130
أو='حتى في'
# تحقق من $ n أكبر من أو يساوي 100 أو لا تستخدم '–ge'.
لو [ $ ن -يعطى 100 ]؛من ثم
رما - طرد - قذف '$ نأكبر من أو يساوي 100 '
آخر
رما - طرد - قذف '$ نأقل من 100 دقيقة
يكون
# تحقق من أن $ n زوجي أو فردي باستخدام عامل التشغيل '=='
لو (( $ س=='حتى في' ))؛من ثم
رما - طرد - قذف 'الرقم زوجي'
آخر
رما - طرد - قذف 'الرقم فردي'
يكون

# 16. ما هي العبارة الشرطية التي يمكن استخدامها كبديل لعبارات if-elseif-else في bash؟

'قضية' يمكن استخدام العبارة كبديل tp إذا-elseif-if بيان. بناء الجملة لـ 'قضية' العبارة في نصوص bash مختلفة عن حالة التبديل بيان لغات البرمجة الأخرى. 'قضية' كتلة مغلقة 'esac' بيان في باش. لا ' استراحة 'يتم استخدام العبارة في الداخل' قضية 'منع للإنهاء من الكتلة.

بناء الجملة:

قضية في
نمط المطابقة1)أوامر؛؛
نمط المطابقة2)أوامر؛؛
……
تطابق النمط)أوامر؛؛
esac

مثال:

#!/bin/bash
#Initialize تذكرة المتغير $
تذكرة=101
# قارن قيمة التذكرة بالدولار مع 23 و 101 و 503
قضية تذكرة دولار في
2. 3)
# طباعة الرسالة إذا كانت القيمة 23
رما - طرد - قذف لقد حصلت على الجائزة الأولى؛؛
101)
# طباعة الرسالة إذا كانت القيمة 101
رما - طرد - قذف حصلت على الجائزة الثانية؛؛
503)
# طباعة الرسالة إذا كانت القيمة 503
رما - طرد - قذف حصلت على الجائزة الثالثة؛؛
*)
# طباعة رسالة إذا كانت القيمة لا تتطابق مع 23 و 101 و 503
رما - طرد - قذف 'آسف ، حاول في المرة القادمة'
خروج 0؛؛
esac

# 17. ما أنواع الحلقات المختلفة التي يمكن استخدامها في bash؟

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

مثال:

#!/bin/bash
# تهيئة $ n
ن=5
# احسب مربع 5-1 باستخدام حلقة while
في حين [ $ ن -Gt 0 ]
فعل
sqr= دولار((ن*ن))
رما - طرد - قذف مربع$ نيكوندولار مربع'
((ن--))
انتهى

# احسب مربع 5-1 باستخدام حلقة for
ل (( أنا=5؛ أنا>0؛ أنا--))
فعل
sqr= دولار((أنا*أنا))
رما - طرد - قذف مربعأنا $يكوندولار مربع'
انتهى

# تهيئة $ x
x=5

# احسب مربع 5-1 باستخدام حتى حلقة
حتى [ x دولار -ال 0 ]
فعل
sqr= دولار((x*x))
رما - طرد - قذف مربعx دولاريكوندولار مربع'
((س--))
انتهى

# 18. كيف يمكن التصريح عن الإجراءات الفرعية واستدعائها في باش؟

في bash تسمى الوظيفة أو الإجراء روتينًا فرعيًا. إعلان واستدعاء روتين فرعي في bash يختلف عن اللغات الأخرى. لا يمكن الإعلان عن أي حجة في الإجراءات الفرعية بخلاف لغات البرمجة القياسية الأخرى. ولكن يمكن تعريف المتغيرات المحلية داخل الروتين الفرعي باستخدام 'محلي' كلمة رئيسية.

مثال:

#!/bin/bash
# قم بتهيئة المتغير $ x و $ y وهما متغيران عموميان
x=10
و=35

# نعلن الوظيفة
myFunc() {
# قم بتعريف المتغير المحلي $ x
محلي x=خمسة عشر

# أعد تخصيص المتغير العام $ y
و=25

# احسب مجموع $ x و $ y
مع= دولار((س + ص))

# اطبع مجموع المتغير المحلي $ x والمتغير العام $ y
رما - طرد - قذف 'مجموعx دولارودولار ذيساوي$ z'
}

# استدعاء الوظيفة
myFunc

# اطبع مجموع المتغيرات العامة $ x و $ y
رما - طرد - قذف 'مجموعx دولارودولار ذيساوي$ z'

# 19. كيفية قص وطباعة جزء من بيانات سلسلة في باش؟

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

مثال:

#!/bin/bash
# تهيئة قيمة سلسلة في $ string
سلسلة='لغة برمجة بايثون'
# قص قيمة السلسلة من الموضع 7 إلى نهاية السلسلة
رما - طرد - قذف $ {سلسلة: 7}
# قص قيمة السلسلة المكونة من 9 أحرف من الموضع 7
رما - طرد - قذف $ {سلسلة: 7: 9}
# قص قيمة السلسلة من 17 إلى 20
رما - طرد - قذف $ {سلسلة: 17: -4}

# 20. أذكر بعض الطرق لإجراء العمليات الحسابية في باش؟

يمكن إجراء العمليات الحسابية بعدة طرق في bash. 'let' ، 'expr' ، 'bc' و أقواس مزدوجة هي أكثر الطرق شيوعًا لإجراء العمليات الحسابية في bash. يتم عرض استخدامات هذه الأوامر في المثال التالي.

مثال:

#!/bin/bash
# حساب الطرح باستخدام expr وتوسيع المعلمة
var1= دولار( إكسبر 120-100 )
# طباعة النتيجة
رما - طرد - قذف var1 دولار
# احسب الإضافة باستخدام الأمر let
يترك var2=200+300
# طباعة rsult
رما - طرد - قذف var2 دولار
# احسب واطبع قيمة القسمة باستخدام 'bc' للحصول على النتيجة
# ذات قيمة كسرية
رما - طرد - قذف مقياس = 2 ؛ 44/7 ' | قبل الميلاد
# احسب قيمة الضرب باستخدام أقواس مزدوجة
var3= دولار(( 5*3 ))
# طباعة النتيجة
رما - طرد - قذف var3 دولار

رقم 21. كيفية التحقق من وجود دليل أو عدم استخدام bash؟

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

مثال:

#!/bin/bash
# قم بتعيين المسار بالمسار في المتغير $ path
طريق='/ home / ubuntu / temp'
# تحقق من وجود الدليل أم لا
لو [ 'المسار $' ]؛من ثم
# طباعة الرسالة إذا كان الدليل موجودًا
رما - طرد - قذف 'الدليل موجود'
آخر
# طباعة الرسالة إذا كان الدليل غير موجود
رما - طرد - قذف 'الدليل غير موجود'
يكون

رقم 22. كيف يمكن إنهاء برنامج bash النصي بدون تنفيذ جميع التعليمات؟

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

مثال:

#!/bin/bash

# قم بتهيئة اسم الملف إلى المتغير $ filename
اسم الملف='course.txt'

# تحقق من وجود الملف أم لا باستخدام الخيار -f
لو [ -F 'اسم الملف $' ]؛من ثم
# طباعة الرسالة إذا كان الملف موجودًا
رما - طرد - قذف 'اسم الملف $موجود '
آخر
# طباعة رسالة إذا كان الملف غير موجود
رما - طرد - قذف 'اسم الملف $لا يوجد'
# إنهاء البرنامج النصي
خروج 1
يكون

# احسب طول الملف إذا كان الملف موجودًا
الطول='مرحاض اسم الملف $'

# طباعة طول الملف
رما - طرد - قذف مجموع الشخصيات -طول $'

رقم 23. ما هي استخدامات عبارات break and continue في باش؟

استراحة يتم استخدام العبارة للإنهاء من حلقة بدون إكمال التكرار الكامل بناءً على شرط و استمر يتم استخدام العبارة في حلقة لحذف بعض العبارات بناءً على شرط. استخدامات استراحة و استمر يتم شرح العبارات في المثال التالي.

مثال:

#!/bin/bash
# قم بتهيئة المتغير $ i إلى 0 لبدء الحلقة
أنا=0
# ستتكرر الحلقة 10 مرات
في حين [ أنا $ -ال 10 ]
فعل
# قم بزيادة القيمة $ i بمقدار 1
((أنا ++))
# إذا كانت قيمة $ i تساوي 8 ، فقم بإنهاء الحلقة باستخدام عبارة 'break'
لو [ أنا $ -مكافئ 8 ]؛من ثم
استراحة؛
يكون
# إذا كانت قيمة $ i أكبر من 6 ، فاحذف العبارة الأخيرة من الحلقة
# باستخدام عبارة المتابعة
لو [ أنا $ -يعطى 6 ]؛من ثم
استمر؛
يكون
رما - طرد - قذف 'القيمة الحالية لـ i =أنا $'
انتهى

# اطبع قيمة $ i بعد الإنهاء من الحلقة
رما - طرد - قذف الآن قيمة i =أنا $'

رقم 24. كيف تجعل ملف باش قابلاً للتنفيذ؟

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

مثال:

# تعيين بت التنفيذ
$chmod+ x filename.sh

# قم بتشغيل الملف القابل للتنفيذ
$./filename.sh

# 25. اذكر بعض الخيارات المستخدمة لاختبار الملفات

تتوفر العديد من الخيارات في باش لاختبار الملف. بعض الخيارات مذكورة أدناه.

خيار وصف
-F يتم استخدامه لاختبار وجود الملف وهو ملف عادي.
يتم استخدامه لاختبار وجود الملف فقط.
-r يتم استخدامه لاختبار وجود الملف ولديه إذن القراءة.
-في يتم استخدامه لاختبار وجود الملف ويجب أن يكتب إذن.
-x يتم استخدامه لاختبار وجود الملف ولديه إذن التنفيذ.
يتم استخدامه لاختبار وجود الدليل.
-ال يتم استخدامه لاختبار وجود الملف وهو ارتباط رمزي.
يتم استخدامه لاختبار وجود الملف وهو مقبس.
يتم استخدامه لاختبار الملف هو جهاز كتلة.
يتم استخدامه للتحقق من أن الملف ليس أحجامًا صفرية.
-مثل يتم استخدامه للتحقق من أن محتوى الملف الأول أحدث من الملف الثاني. على سبيل المثال ، يشير file1 -nt file2 إلى أن file1 أحدث من file2.
-لا يتم استخدامه للتحقق من محتوى الملف الأول أقدم من الملف الثاني. على سبيل المثال ، يشير file1 -ot file2 إلى أن file1 أقدم من file2.
-ef يتم استخدامه للتحقق من أن رابطين صلبين يشيران إلى نفس الملف. على سبيل المثال ، يشير flink1 -ef flink2 إلى أن flink1 و flink2 عبارة عن روابط صلبة ويشير كلاهما إلى نفس الملف.

# 26. ما هو المقصود بـ 'bc' وكيف يمكن استخدام هذا الأمر في bash؟

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

مثال:

#!/bin/bash
# احسب القسمة بدون قيمة كسرية
رما - طرد - قذف '39 / 7 ' | قبل الميلاد

# احسب القسمة بالقيمة الكسرية الكاملة
رما - طرد - قذف '39 / 7 ' | قبل الميلاد -ال

# احسب القسمة بثلاثة أرقام بعد الفاصلة العشرية
رما - طرد - قذف مقياس = 3 ؛ 39/7 ' | قبل الميلاد

رقم 27. كيف يمكنك طباعة سطر معين من ملف في باش؟

هناك طرق عديدة لطباعة سطر معين في bash. كيف ال 'awk' ، 'sed' و 'ذيل' يمكن استخدام الأوامر لطباعة سطر معين من ملف في bash موضح في المثال التالي.

مثال:

#!/bin/bash

# قراءة وتخزين السطر الأول من الملف باستخدام الأمر `awk` مع متغير NR
خط 1='awk '{if (NR == 1) اطبع $ 0}'بالطبع. txt'
# طباعة الخط
رما - طرد - قذف $ line1

# اقرأ السطر الثاني من الملف باستخدام الأمر `sed` مع الخيار -n
خط 2='سيد 2p course.txt'
# طباعة الخط
رما - طرد - قذف $ line2

# اقرأ السطر الأخير من الملف باستخدام أمر 'tail' مع الخيار -n
line3='ذيل 1بالطبع. txt'
# طباعة الملف
رما - طرد - قذف $line3

رقم 28. ما هو IFS؟

IFS هو متغير صدفة خاص. الشكل الكامل لـ IFS هو فاصل المجال الداخلي ،
يعمل كمحدد لفصل الكلمة عن سطر النص. يتم استخدامه بشكل أساسي لتقسيم سلسلة وقراءة أمر واستبدال النص وما إلى ذلك.

مثال:

#!/bin/bash
# Declare ':' كمحدد لتقسيم النص
IFS=':'
# قم بتعيين بيانات نصية باستخدام ':' إلى $ text
نص='احمر اخضر ازرق'
# for loop سيقرأ كل كلمة بعد تقسيم النص بناءً على IFS
لساعةفي نص $؛فعل
# اطبع الكلمة
رما - طرد - قذف ساعات
انتهى

# 29. كيف تعرف طول سلسلة البيانات؟

'expr' ، 'wc' و 'Awk' يمكن استخدام الأوامر لمعرفة طول سلسلة البيانات في bash. 'إكسبر' و 'Awk' استخدام الأوامر الطول اختيار، 'مرحاض' يستخدم الأمر '–C' خيار لحساب طول السلسلة.

مثال:

يتم عرض استخدامات الأوامر المذكورة أعلاه في البرنامج النصي التالي.

#!/bin/bash
# طول العد باستخدام خيار طول `expr`
رما - طرد - قذف 'إكسبرالطول'أحب PHP''
# طول العد باستخدام الأمر `wc`
رما - طرد - قذف انا احب باش | مرحاض
# عد الطول باستخدام أمر `awk`
رما - طرد - قذف 'أنا أحب بايثون' | awk '{print length}'

# 30. كيفية تشغيل سكربت باش متعدد بالتوازي؟

يمكن تنفيذ عدة نصوص bash بالتوازي باستخدام nohup أمر. يوضح المثال التالي كيف يمكن تنفيذ عدة ملفات bash بالتوازي من مجلد.

مثال:

# قم بتعيين اسم مجلد بالمسار في المتغير $ dir الذي يحتوي على
# عدة ملفات باش
لك='home / Ubuntu / temp'

# for loop سيقرأ كل ملف من الدليل وينفذ بالتوازي
لالنصيفيلك/ *
فعل
nohup سحق 'النصي $' &
انتهى

استنتاج:

تم وصف معظم أسئلة المقابلة الأساسية لسيناريو باش في هذه المقالة للقراء الذين يرغبون في بدء مهنة كمبرمج باش.