المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [ دورة التوزيعات الامنية ] كتابة سكربتات Bash (المتغيرات)



r00t-minat0r
12-06-2011, 09:03 PM
http://up.arab-x.com/Feb10/Yeq33899.png

بسم الله الرحمن الرحيم

http://img104.herosh.com/2011/09/22/968555532.png

[ المتغيرات ]
المتغيرات هي من اهم الأشياء في اكواد [ Bash ] ومن اهمها ايظا في جميع لغات البرمجة
تمكنك المتغيرات من حفظ قيمة نصية او رقمية على شكل متغير يسمح لك بتنفيذ الأوامر عليه في جميع انحاء السكربت
الأن نأتي الى كيفية تخزين البيانات الى متغير
لنقل مثلا انني اريد من تخزين رقمين كل منهما في متغير ومن ثم اقوم بعمل بعض العمليات الحسابية عليهما

لحفظ المتغير حسب اسمه ننفذ الكود التالي على افتراض ان المتغير هنا اسمه A

A=""
حيث نضع ما بين القوسين القيمة المراد حفظها لهذا المتغير

وعند استخراج هذه القيمة
مثلا لنقل حفظنا قيمة المتغير A = 5 عن طريق الامر التالي

A="5"
وطلبنا من البرنامج طباعة قيمة المتغير سوف يكون الامر كالتالي

echo $A
سهله جدا ولكن مهمه

الان لنطبق مثال على هذه العملية
عندنا متغيران A & B وسوف نحفظ لكل متغير قيمة رقمية ومن ثما ننشاء عليهما بعذ العمليات الحسابة التي سوف نقوم بطباعتها مع النواتج
كما في السابق افتح محرر النصوص وادخل الكود التالي

#!/bin/bash
clear
A="10"
B="2"
echo "A =" $A
echo "B =" $B
echo " here we go ! aljyyosh "
echo ""

echo "A + B " $ans1
expr $A + $B
echo ""
echo "A - B "
expr $A - $B
echo ""
echo " end "
قم بحفظ الملف كما في السابق وتشغيله باستخدام

chmod +x script_2
./script_2
حيث script_2 هو اسم الملف

في الكود تلاحظ ان البرنامج اعطى قيمة للمتغيران A & B كما في التالي

A = 10
B = 2
ومن ثم استخدم اداة خارجية وهي [ expr ] وهي اداة بسيطة للمساعدة على تنفيذ العمليات الحسابية في سطر الاوامر

بعد تنفيذ السكربت نلاحظ النتيجة كما في الصورة :
http://img104.herosh.com/2011/12/06/447383034.png

http://img104.herosh.com/2011/09/22/968555532.png

ويمكننا ايظا اعطاء قيمة نصية للمتغير مثلا اريد حفظ اسم المنتدى في متغير وطلب من السكربت طباعته
استخدم الكود التالي

#!/bin/bash
name="Aljyyosh Forum"
echo "Welcome to " $name
كما ترى اعطينا المتغير name القيمة "Aljyyosh Forum" وقمنا باستخدام قيمة المتغير في عملية الطباعة .

http://img104.herosh.com/2011/09/22/968555532.png

ويمكننا ايظا اعطاء للمتغير قيمة مسحوبة من مخرج امر
مثلا لنقل انني اريد ان اعرف مسار العمل الحالي على النظام بكل بساطة انفذ الأمر التالي في سطر الاوامر

pwd
ولكن لنقل ااني اريد حفظ مخرجات هذا الأمر الى متغير لأستخدمه في السكربت
قم باستخدام الكود التالي

#!/bin/bash
path=$(pwd)
clear
echo "you are working now in : " $path
وقم بحفظه وتشغيله كما في السابق
كما ترى لقد اعطينا المتغير path القيمة وهي مخرج الأمر pwd مهما كانت وتلاحظ اننا استخدمنا الكود التالي لاعطاء القيمة للمتغير

path=$(pwd)
الرجاء الأنتباه للاقوس التي حول الامر ولاشارة $ التي وضعت قبل القيمة لانه تعطي المتغير قيمة مخرج الأمر وليس الأمر نفسه على انه قيمة نصية

http://img104.herosh.com/2011/09/22/968555532.png

الفهرس
1- المخرجات
(http://www.aljyyosh.com/vb/showthread.php?t=30136)2- المتغيرات
(http://www.aljyyosh.com/vb/showthread.php?t=30137)3- المدخلات
(http://www.aljyyosh.com/vb/showthread.php?t=30138)4- دالة IF & بعض الاوامر (http://www.aljyyosh.com/vb/showthread.php?t=30139)
http://img104.herosh.com/2011/09/22/968555532.png

Mad Devil
12-07-2011, 01:04 AM
ربنا يحفطك يالغالي وتسلم على الطرح الجميل

تحياتي لك

Ace
12-07-2011, 01:28 AM
كلمة مبدع قليلة فيك حبي بارك الله فيك

pSyCh0_3D
12-07-2011, 01:18 PM
شو راح أقول بس يعجز اللسان عن وصف الابداع حبيبي إلى أمام يا وحش

bade boo
02-05-2012, 01:03 AM
مشكككككورررررررررررررر

0N0
02-05-2012, 12:02 PM
اضافة بسيطة اخوي اذا تسمح لي ...
طبعا فيه نوعين من المدخلات الاول global والثاني local
س:-وش الفرق بينهم ؟
الاول تقدر تستدعيه من اي مكان بالسكربت ولكن الثاني يكون داخل الدالة حقته (function)
نآخذ مثآﻷ عشان توضح الامور


#!/bin/bash
func()
{
local aa="4"
echo $aa
}
func
aa=1
echo $aa

اول شي سوينا دالة func واسندنا قيمة للمتغير aa بس لاحظوا كلمة local يعني المتغير لوكال (محلي)
في نهاية الكود نفس المتغير اخذ قيمة ثانية وهي 1 بس المتغير هذا عام وتقدر تستدعيه من اي مكان بعكس المتغير الاول ماتقدر تستدعيه الا داخل الفنكشن

احس اني اتكلم هندي بس ان شاء وصلت المعلومة

واعتذر مره ثانية على المداخله

sarahassan
10-02-2012, 07:22 AM
يسلموووووووووووو

سارة الغامدي
10-06-2012, 01:47 AM
مشكـؤؤؤؤر ..