90 lines
5.6 KiB
Markdown
90 lines
5.6 KiB
Markdown
|
---
|
||
|
title: Writing a Bash Script
|
||
|
localeTitle: كتابة سيناريو باش
|
||
|
---
|
||
|
# كتابة سيناريو باش
|
||
|
|
||
|
من خلال كتابة الأوامر على سطر أوامر Linux ، يمكنك إعطاء تعليمات الخادم لإنجاز بعض المهام البسيطة. كالجحيم البرنامج النصي هو وسيلة لوضع مجموعة من التعليمات لجعل هذا أسهل. تصبح نصوص Shell أكثر قوة عندما يمكنك إضافة المنطق كما `if` و `while` تتحكم تلقائيًا في كيفية تصرفهم مع تغير الظروف.
|
||
|
|
||
|
## ما هو باش؟
|
||
|
|
||
|
Bash هو اسم مترجم سطر الأوامر ، وهو برنامج يجعل من المنطقي أوامر Linux التي تدخلها في الأمر موجه ، أو في البرنامج النصي الخاص بك.
|
||
|
|
||
|
## ماذا يوجد في البرنامج النصي؟
|
||
|
|
||
|
البرنامج النصي هو مجرد ملف. يتكون النص الأساسي من سطر تمهيدي يخبر الخادم بما يجب عليه ، والآخر أو المزيد من الإرشادات للتنفيذ. إليك مثال على ذلك:
|
||
|
|
||
|
`#!/bin/bash
|
||
|
echo "Hi. I'm your new favorite bash script."
|
||
|
`
|
||
|
|
||
|
السطر الأول له معنى خاص ، والذي سنناقشه أدناه. السطر الثاني هو مجرد أمر لينكس ، واحد يمكن أن تكتبه خارج على سطر الأوامر.
|
||
|
|
||
|
## ما هو التعليق؟
|
||
|
|
||
|
التعليقات هي نص تضيفه إلى النص البرمجي الذي تنوي أن تتجاهله bash. تبدأ التعليقات بعلامة الجنيه ، وتكون مفيدة لـ شرح التعليمة البرمجية حتى تتمكن أنت والمستخدمين الآخرين من فهمها. لإضافة تعليق ، اكتب الرمز `#` ، متبوعًا بأي نص هذا مفيد لك. باش سوف يتجاهل `#` وكل شيء بعده.
|
||
|
|
||
|
**ملاحظة:** السطر الأول من النص البرمجي ليس تعليقًا. يكون هذا السطر دائمًا أولاً ، ويبدأ دائمًا بـ `#!` ولديه خاصة معنى باش.
|
||
|
|
||
|
هنا النصي من قبل ، وعلق:
|
||
|
|
||
|
`#!/bin/bash # Designates the path to the bash program. Must start with '#!' (but isn't a comment).
|
||
|
echo "Hi. I'm your new favorite bash script." # 'echo' is a program that sends a string to the screen.
|
||
|
`
|
||
|
|
||
|
## تنفيذ البرنامج النصي
|
||
|
|
||
|
يمكنك فتح محرر نصوص ، ولصق رمز المثال هذا وحفظ الملف ، ولديك برنامج نصي. البرامج النصية هي تقليديا اسمه في النهاية بـ ".sh" ، لذلك قد تحفظ هذا الرمز على أنه myscript.sh.
|
||
|
|
||
|
لن يتم تنفيذ النص البرمجي حتى نقوم بعمل أمرين:
|
||
|
|
||
|
**أولا ، جعلها قابلة للتنفيذ.** (سوف يتعين علينا القيام بذلك مرة واحدة فقط.) يعتمد Linux على نطاق واسع على أذونات الملفات. إنهم يحددون الكثير عن سلوك خادمك. هناك الكثير لتعرفه أذونات ، ولكن في الوقت الحالي لا نحتاج إلا إلى معرفة ذلك: لا يمكنك تشغيل البرنامج النصي حتى تعطي نفسك أذونات التنفيذ. إلى افعل ذلك ، اكتب:
|
||
|
|
||
|
`chmod +x my script.sh`
|
||
|
|
||
|
**ثانيا ، قم بتشغيله.** نقوم بتنفيذ البرنامج النصي من سطر الأوامر تمامًا مثل أي أمر آخر مثل `ls` أو `date` . النص الاسم هو الأمر ، ويجب أن تسبقه بـ "./" عند تسميته:
|
||
|
|
||
|
`./myscript.sh # Outputs "Hi. I'm your new favorite bash script." (This part is a comment!)`
|
||
|
|
||
|
## الشرطية
|
||
|
|
||
|
في بعض الأحيان ترغب في أن يقوم برنامجك النصي بعمل شيء ما فقط إذا كان هناك شيء آخر صحيح. على سبيل المثال ، طباعة رسالة فقط إذا كانت القيمة تحت حد معين. في ما يلي مثال لاستخدامه في `if` القيام بذلك:
|
||
|
|
||
|
`#!/bin/bash
|
||
|
|
||
|
count=1 # Create a variable named count and set it to 1
|
||
|
|
||
|
if [[ $count -lt 11 ]]; then # This is an if block (or conditional). Test to see if $count is 10 or less. If it is, execute the instructions inside the block.
|
||
|
echo "$count is 10 or less" # This will print, because count = 1.
|
||
|
fi # Every if ends with fi
|
||
|
`
|
||
|
|
||
|
وبالمثل ، يمكننا ترتيب البرنامج النصي بحيث ينفذ تعليمات فقط بينما يكون شيء ما صحيحًا. سنقوم بتغيير الكود بحيث قيمة التغيرات المتغيرة العد:
|
||
|
|
||
|
`#!/bin/bash
|
||
|
|
||
|
count=1 # Create a variable named count and set it to 1
|
||
|
|
||
|
while [[ $count -lt 11 ]]; do # This is an if block (or conditional). Test to see if $count is 10 or less. If it is, execute the instructions inside the block.
|
||
|
echo "$count is 10 or less" # This will print as long as count <= 10.
|
||
|
count=$((count+1)) # Increment count
|
||
|
done # Every while ends with done
|
||
|
`
|
||
|
|
||
|
سيظهر ناتج هذا الإصدار من myscript.sh بالشكل التالي:
|
||
|
|
||
|
`"1 is 10 or less"
|
||
|
"2 is 10 or less"
|
||
|
"3 is 10 or less"
|
||
|
"4 is 10 or less"
|
||
|
"5 is 10 or less"
|
||
|
"6 is 10 or less"
|
||
|
"7 is 10 or less"
|
||
|
"8 is 10 or less"
|
||
|
"9 is 10 or less"
|
||
|
"10 is 10 or less"
|
||
|
`
|
||
|
|
||
|
## مخطوطات العالم الحقيقي
|
||
|
|
||
|
هذه الأمثلة ليست مفيدة بشكل كبير ، ولكن المبادئ هي. باستخدام `while` ، `if` ، وأي أمر قد اكتب خلاف ذلك يدوياً ، يمكنك إنشاء برامج نصية تقوم بعمل قيّم.
|