المتغيرات هي الجزء الأساسي في البرمجة، أو يمكننا القول أنها روح لغة البرمجة. تحدد المتغيرات موقع الذاكرة من خلال الأحرف والأرقام والأبجدية الرقمية. يتم استخدامها ليتم الرجوع إليها ومعالجتها في برنامج كمبيوتر.
ما هي المتغيرات؟
المتغيرات هي الحاويات التي تخزن البيانات أو المعلومات المفيدة كقيمة بداخلها. فيما يلي بناء جملة المتغير:
Variable_name =value
المتغير هو شكل مدمج من كلمتين، أي تختلف + قادر، مما يعني أنه يمكن تغيير قيمته، ويمكن استخدامه لعدة مرات.
قراءة ملفات json
يُعرف المتغير بالتخزين المؤقت لأي نوع من البيانات مثل الأعداد الصحيحة، والتعويم، والشار، وما إلى ذلك. ويمكن أن يتضمن اسم المتغير الحروف الهجائية والأرقام والشرطة السفلية ، ويمكن أن يبدأ اسمه بالحروف الهجائية والشرطة السفلية فقط.
ملاحظة: لا يمكننا تحديد اسم متغير يبدأ بأي رقم.
ما هي متغيرات باش؟
لا يمكننا استخدام متغيرات bash دون الحصول على المعلومات الصحيحة ( بناء الجملة، أنواع البيانات، أنواع، العمل ) حول هذا الموضوع، فلنستعرض هذا البرنامج التعليمي الموجز للحصول على نظرة عامة مناسبة لمتغيرات Bash.
في البداية، تعرف على بناء الجملة.
بناء الجملة:
Variable_name=value
القواعد المحددة لتحديد متغيرات Bash:
- قم ببدء اسم المتغير بعلامة الدولار ($) أثناء قراءة المتغير أو طباعته.
- اترك علامة الدولار ($) أثناء تعيين متغير بأي قيمة.
- قد يكون اسم المتغير أبجديًا رقميًا، أو قد يكون مكتوبًا بشرطة سفلية (_).
- اسم المتغير حساس لحالة الأحرف: يعتبر x وX كمتغيرين مختلفين.
- يمكن كتابة اسم المتغير إما بأحرف UPPER_CASE أو LOWER_CASE أو مزيج من الاثنين كما تريد.
- يمكن وضع المتغير في أي مكان في Bash Script أو في سطر الأوامر، لأنه في وقت التشغيل، سيستبدله Bash بالقيمة المخصصة له. أصبح ذلك ممكنًا بسبب إجراء الاستبدال قبل تشغيل الأمر.
- يجب ألا تكون هناك مسافة بيضاء على جانبي علامة المساواة (=) بين اسم المتغير وقيمته. وفيما يلي بعض الأمثلة على متغيرات غير صالحة وجود مسافات بيضاء (يُشار إليها بالنقاط ...) بينهما كما هو موضح أدناه:
فار1=...متغير1
var2...=variable2
var3...=...variable3 - ليست هناك حاجة لاستخدام أي علامات اقتباس، سواء كانت مفردة أو مزدوجة، لتحديد متغير بقيمة حرف واحد مثل var1=variable . لإدخال عدة كلمات أو سلسلة كعنصر واحد في متغير، استخدم علامات الاقتباس لتضمين المحتوى الخاص بك في هذا المتغير.
- يساعد الاقتباس المفرد ('') في التعامل مع كل شخصية.
- يساعد الاقتباس المزدوج ('') على إجراء الاستبدال.
أنواع البيانات
في لغات البرمجة الرسمية، عليك تحديد نوع البيانات لأي متغير في وقت إعلان المتغير. على سبيل المثال:
int year=2012 char comp_name='jtp'
لكن في حالة Bash، لا يتعين عليك تحديد نوع بيانات أي متغير في وقت إعلان المتغير. متغيرات باش هي غير مكتوب ، وهو ما يعني فقط كتابة اسم المتغير عن طريق تعيين قيمته، وسوف يأخذ في الاعتبار نوع البيانات هذا تلقائيًا.
بحيث إذا قمت بتعيين أي قيمة رقمية للمتغير، فستعمل كعدد صحيح وإذا قمت بتعيين قيمة حرف للمتغير، فستكون سلسلة.
year=2012 comp_name=jtp
باستخدام أمر الصدى، قم بقراءتها عن طريق تعيين علامة $ قبل اسمها مثل
صدى $ سنة
صدى اسم $
أنواع متغيرات باش
هناك نوعان من المتغيرات في الصدفة أو أي نظام UNIX.
- المتغيرات المحددة من قبل النظام
- المتغيرات المعرفة من قبل المستخدم
1. المتغيرات المحددة من قبل النظام: هذه هي المتغيرات المحددة مسبقًا حيث يتم إنشاؤها وصيانتها بواسطة نظام التشغيل LINUX نفسه. اصطلاحهم القياسي هو أنه يتم تعريفهم بشكل عام بأحرف كبيرة، أي UPPER_CASE. لذا، كلما رأيت متغيرًا محددًا بأحرف كبيرة، فمن المرجح أن يكون متغيرًا محددًا من قبل النظام.
هذه هي المتغيرات التالية المحددة من قبل النظام كما هو موضح أدناه:
1. باش يمثل اسم شل.
مثال:
BASH=/usr/bin/bash
2.BASH_VERSION يحدد إصدار الصدفة الذي يحمله Bash.
مثال:
BASH_VERSION=4.2.46(2)
3. الأعمدة تحديد لا. من الأعمدة لشاشتنا.
مثال:
COLUMNS=80
4. المنزل يحدد الدليل الرئيسي للمستخدم.
مثال:
HOME=/home/jatpoint
5. اسم السجل يحدد اسم مستخدم التسجيل.
مثال:
LOGNAME=javatpoint
6. أوستايب يحكي نوع نظام التشغيل.
مثال:
OSTYPE=linux-gnu
7. الأشخاص ذوي الإعاقة يمثل دليل العمل الحالي.
مثال:
PWD=/home/javatpoint
8. اسم المستخدم يحدد اسم المستخدم الذي قام بتسجيل الدخول حاليًا.
مثال:
USERNAME=javatpoint
لمعرفة قائمة هذه المتغيرات في نظامك، اكتب الأوامر مجموعة، البيئة ، و printenv على محطة سطر الأوامر على النحو التالي:
1. كتابة تعيين يأمر.
انتاج:
2. كتابة بيئة يأمر
انتاج:
3. كتابة الأمر printenv
انتاج:
لنستدعي هذه المتغيرات من خلال Bash Shell. فيما يلي الخطوات المحددة:
الخطوة 1: قم بإنشاء برنامج نصي باسم Bash_sdvar واكتب الكود التالي على Bash Console كما يلي:
#! /bin/bash # Bash System-defined Variables echo $HOME # Home Directory echo $PWD # current working directory echo $BASH # Bash shell name echo $BASH_VERSION # Bash shell Version echo $LOGNAME # Name of the Login User echo $OSTYPE # Type of OS
الخطوة 2. انظر إلى Bash Console الموضح أدناه:
الخطوه 3. حفظ وتنفيذ البرنامج النصي. سيظهر لك الناتج كما ترون في الصورة أدناه.
انتاج:
2. المتغيرات المعرفة من قبل المستخدم: يتم إنشاء هذه المتغيرات وصيانتها من قبل المستخدم. بشكل عام، يتم تعريف هذه الأنواع من المتغيرات في LOWER_CASES. لا توجد أي قاعدة صارمة لكتابة هذه المتغيرات بالأحرف الصغيرة. يمكننا كتابتها بالأحرف الكبيرة أيضًا.
لنقم بإنشاء Bash Script لتعريف هذه المتغيرات. اتبع الخطوات الواردة أدناه:
الخطوة 1. إنشاء برنامج نصي اسمه bash_yard واكتب الكود التالي على Bash Console:
#! /bin/bash # User-Defined Variables name=Peter ROLL_NO=5245325 echo 'The student name is $name and his Roll number is $ROLL_NO.'
الخطوة 2. راجع الكود الموجود على Bash Console.
الخطوه 3. حفظ وتنفيذ البرنامج النصي.
انتاج:
عمل متغيرات باش
بعد العرض التوضيحي الأساسي للمتغيرات، دعنا ننتقل لمعرفة كيف تعمل؟
هناك إجراءان نقوم بتنفيذهما عادةً لمتغير في Bash كما هو موضح أدناه:
- تحديد قيمة للمتغير
- قراءة القيمة لذلك.
يمكن تعيين قيمة متغيرة بطرق مختلفة، الطريقة الأكثر شيوعًا هي تعيين القيمة مباشرةً. لقراءة متغير، يمكننا وضع اسمه (يسبقه علامة $) في أي مكان في البرنامج النصي.
يتحقق Bash أولاً من جميع أسماء المتغيرات كما لو كانت موجودة في البرنامج النصي. ثم يفسر كل سطر من البرنامج النصي لدينا. بعد تحديد كل متغير، فإنه يستبدل اسم المتغير بالقيمة المخصصة له. بعد كل شيء، فهو يفسر/يشغل هذا السطر من التعليمات البرمجية ويستمر في هذه العملية لكل سطر مشفر من البرنامج النصي الخاص بنا.
ملاحظة: يعمل كلا النوعين من المتغيرات في Bash (التي ناقشناها) على الجهاز الطرفي وكذلك على البرنامج النصي Bash. دعونا نرى عملهم على Terminal و Bash من خلال مثال مباشر:
مثال: اتصل باسم المستخدم بواسطة XYZ، وموقعه الذي يعمل فيه حاليًا، وإصدار Bash Shell الذي يستخدمه في Bash Scripting.
1. العمل على المحطة
2. العمل على باش شل
راجع البرنامج النصي المسمى بواسطة Bash_Var الموضح أدناه:
في 3بحث وتطويرخط البرنامج النصي ، لقد أعلنا عن متغير اسم المستخدم لتخزين اسم المستخدم XYZ كقيمته.
في السطرين الأخيرين لقد قمنا بطباعة الرسالة المقصودة باستخدام صدى صوت يأمر.
يوجد متغيران وأمر واحد في هذه الرسالة. ويسبق كل واحد منهم علامة الدولار ($) حيث:
لفهم أفضل، قم بإنشاء هذا البرنامج النصي باتباع الكود المحدد:
#! /bin/bash #Bash Variables USER_NAME=XYZ echo Hey there! $USER_NAME is any user currently working on the directory $PWD with Bash Shell Version $BASH_VERSION.
وسوف تظهر لك النتيجة كما ترون في الصورة التالية:
انتاج:
هناك المزيد من الأمثلة لممارسة المتغيرات على كل من المحطة الطرفية و Bash Shell. من خلال متابعة مجموعة القاعدة (تمت مناقشته من قبل) لديك ممارسة على المتغيرات على النحو التالي:
أ. استخدام محطة سطر الأوامر
1. ضبط المتغيرات
2. قراءة المتغيرات والإشارة إليها
3. المتغيرات غير صالحة
4. الجمع بين متغيرين من السلسلة
5. تسلسل السلاسل مع المتغيرات
ملاحظة: لا تستخدم علامات الاقتباس المفردة للجمع بين متغيرين وأيضًا لتسلسل السلاسل مع المتغيرات. بحيث إذا قمت بتسلسل السلاسل من خلال تضمينها في علامات اقتباس مفردة، فسيكون من الصعب قراءتها كما ترون في الصورة الموضحة أدناه:
ب. استخدام برنامج Bash النصي:
إنه مثال على الجمع بين متغيرات السلسلة.
انتاج:
وسائط سطر الأوامر
تُستخدم وسيطات سطر الأوامر لجعل البرنامج النصي أكثر ديناميكية عن طريق تمرير الإدخال إلى الكود. نقوم بتمرير هذه الوسائط في وقت تشغيل البرنامج النصي بالشكل التالي:
./script_name arg1 arg2 arg3.....
يجب ألا يكون هناك مسافة بين اسم البرنامج النصي وكافة وسائط التمرير.
كيفية استخدام وسيطات سطر الأوامر؟
في Bash Shell، يتم استخدامها مع الإشارة إلى المعلمات الافتراضية التالية أو المتغيرات الخاصة.
فيما يلي الطريقتان اللتان نستخدمهما لتمرير وسيطات سطر الأوامر:
الطريقة الأولى: استخدام رقم المنصب
إنها الطريقة الأولى للوصول إلى الوسائط باستخدام المعلمات الافتراضية (...). الصورة أدناه توضح ذلك:
انتاج:
الطريقة الثانية: استخدام المصفوفة.
إنها الطريقة الثانية لتمرير الوسائط كمصفوفة. اتبع الخوارزمية المحددة لتطبيق هذه الطريقة.
الخطوة 1: إنشاء برنامج نصي باش.
الخطوة 2: قم بتعريف أي اسم متغير وقم بتعيين قيمته كـ $أ بالشكل التالي:
variable_name=('$@')
أين $@ هي الوسيطة الافتراضية المستخدمة لتخزين الوسائط (التي نمررها) كمصفوفة.
الخطوه 3: قم بعرض الوسائط عن طريق تحديد فهرس المصفوفة الخاص بها بالشكل التالي:
${variable_name[i]}
الخطوة 4: حفظ وإغلاق البرنامج النصي.
الخطوة 5: قم بتنفيذ البرنامج النصي عن طريق تمرير الوسائط.
شاهد البرنامج التالي:
برنامج:
#!/bin/bash args=('$@') echo ${args[0]} ${args[1]} ${args[2]} ${args[3]}
على وحدة تحكم باش:
انتاج:
استبدال الأوامر
وفقا للوثائق الرسمية باش
'يسمح استبدال الأوامر بإخراج أمر ليحل محل الأمر نفسه. يقوم Bash بتنفيذ التوسيع عن طريق تنفيذ الأمر في بيئة غلاف فرعي واستبدال استبدال الأمر بالمخرج القياسي للأمر، مع حذف أي أسطر جديدة لاحقة. لا يتم حذف الأسطر الجديدة المضمنة، ولكن قد تتم إزالتها أثناء تقسيم الكلمات.'
يشير استبدال الأوامر إلى التوسيع الذي يؤديه Bash لنا. يأخذ مخرجات أمر Bash، ويخزنه في متغير (بشكل عام)، ويعرض مرة أخرى مع الصدى.
استبدال الأوامر يوفر مرونة البيانات فيما يتعلق بالبرمجة النصية والتخصيص المتغير. إنه أمر بسيط وسهل للحصول على إخراج سطر أوامر واحد. في حالة تجاوز الإخراج بضعة أسطر، تتم إزالة الأسطر اللاحقة الجديدة، وينتهي المحتوى الكامل للمخرج في سطر واحد.
انظر بناء الجملة للاستخدام:
بناء الجملة
الشكل الكلاسيكي لاستبدال الأوامر في متغير أو استبدال الأوامر يستخدم علامات الاقتباس الخلفية (`...`)، كما هو موضح أدناه:
variable_name=`command_name` variable_name=`command_name [option...] argument1 argument2...` variable_name=`/path/to/command`
الآن، نقوم باستبدال الأوامر من خلال وضع الأوامر بين قوسين (مسبوقة بعلامة الدولار ($)). الق نظرة:
variable_name=$(command_name) variable_name=$(command_name [option...] argument1 argument2...) variable_name=$(path/to/command)
لذا، دعونا نقوم باستبدال الأوامر بمثال وفقًا للمناقشة.
في هذا المثال، نقوم باستبدال أمر واحد ls في متغير. انظر المحطة.
خط 1: بدون استبدال الأوامر، يتم توسيع الإخراج في أسطر متعددة.
السطر 2 و 3: مع استبدال الأوامر، يتم إنهاء الإخراج على سطر واحد (يتم توفير المساحة عن طريق إزالة الأسطر المتأخرة حديثًا).
فيما يلي برنامج Bash النصي لاختبار استبدال الأوامر.
برنامج:
#! /bin/bash # command substitution lsResult=$(ls) echo 'My files are:' $lsResult
انظر وحدة تحكم باش:
انتاج: