93 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			93 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` ، وأي أمر قد اكتب خلاف ذلك يدوياً ، يمكنك إنشاء برامج نصية تقوم بعمل قيّم. |