كيفية التعامل مع حجج سطر الأوامر في Bash؟

Kyfyt Alt Aml M Hjj Str Alawamr Fy Bash



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

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







كيفية التعامل مع حجج سطر الأوامر في Bash؟

هناك طرق مختلفة للتعامل مع سجلات سطر الأوامر في Bash ، لذا دعنا نلقي نظرة عليها للحصول على معلومات موجزة:



دالة getopt



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





  • الحجج القصيرة: هذه هي الوسيطات المكونة من حرف واحد متبوعة بواصلة. على سبيل المثال ، -a ، -l ، -h ، وما إلى ذلك ، هي بعض الأمثلة على الوسائط الفردية.

  • الحجج الطويلة: هذه هي الوسائط المتعددة الأحرف متبوعة بشرطة مزدوجة. هناك العديد من الأمثلة على الحجج الطويلة ، مثل –all ، –list ، –help ، إلخ.

لنأخذ مثالاً حيث سنتعامل مع وسيطات سطر الأوامر باستخدام الأداة المساعدة getopt. لقد أنشأنا نصًا برمجيًا باسم 'getopt.sh' يحتوي على المعلومات التالية:



! / سلة مهملات / سحق

في حين getopts 'ا ب ت ث:' تفاصيل؛ فعل

قضية ' تفاصيل دولار ' في

أ )

صدى صوت 'اسم المواطن هو OPTARG دولار ' ؛؛

ب )

صدى صوت 'هوية المواطن هي OPTARG دولار ' ؛؛

ج )

صدى صوت 'مكان الميلاد OPTARG دولار ' ؛؛

د )

صدى صوت 'الاحتلال OPTARG دولار ' ؛؛

* )

خروج 1 ؛؛

esac

فعله

تحول ' $ (($ OPTING -1) ) '



إذا [ ! -مع 1 دولار ] ؛ ومن بعد

صدى صوت 'الحالة الاجتماعية $ 1'

آخر

صدى صوت 'لا يوجد إدخالات'

خروج 1

يكون



إذا [ ! -مع 2 دولار ] ؛ ومن بعد

صدى صوت 'أفراد العائلة $ 2'

يكون

الآن دعنا ننفذ البرنامج النصي باستخدام الوسائط المطلوبة في الإدخال:

كما ترى في الصورة أعلاه ، نقوم بتشغيل البرنامج النصي بوظائف getopt فقط ثم نضيف وسيطات عادية للحصول على النتيجة الكاملة.

استخدام الأعلام

العلامات ليست سوى أحرف مفردة مسبوقة بشرطة (-). عندما نمرر الوسيطات باستخدام دالة getopt ، فإننا نستخدم الأعلام. -a و -b و -c هي بعض الأمثلة على الأعلام. على سبيل المثال ، يتطلب البرنامج النصي اسم المواطن والمعرف والمكان والعمر والوظيفة. ومن ثم ، استخدمنا الأعلام j و k و l و m و n لتحديد اسم المواطن وهويته ومكانه وعمره ومهنته في وقت واحد:

#! / بن / باش

في حين getopts j: k: l: m: n: flag_info

فعل

قضية ' $ {flag_info} ' في
< رأ >
< الذي - التي > ي ) الاسم = $ {OPTARG} ؛؛ الذي - التي >
< الذي - التي > ك ) مواطن = $ {OPTARG} ؛؛ الذي - التي >
< الذي - التي > ل ) مكان = $ {OPTARG} ؛؛ الذي - التي >
< الذي - التي > م ) سن = $ {OPTARG} ؛؛ الذي - التي >
< الذي - التي > ن ) إشغال = $ {OPTARG} ؛؛ الذي - التي >
رأ >
esac

فعله

صدى صوت 'هذه هي التفاصيل التي تم إدخالها:'

صدى صوت 'اسم المواطن: اسم مليون دولار ' ؛

صدى صوت هوية المواطن: مواطن ' ؛

صدى صوت 'مكان: $ مكان ' ؛

صدى صوت 'سن: العمر $ ' ؛

صدى صوت 'إشغال: $ الاحتلال ' ؛

سيعطي البرنامج النصي النتيجة التالية في المحطة:

. / < النصي > داني 476 تورنتو م 25 مؤلف

استخدام [البريد الإلكتروني محمي] مع الحلقات

ال ' [البريد الإلكتروني محمي] 'المتغير ليس سوى مصفوفة من جميع وسائط الإدخال. يمكننا تمرير أي عدد من المدخلات باستخدام ' [البريد الإلكتروني محمي] ' عامل. يمكنك استخدام هذا المتغير كحلقة للتكرار خلال المتغيرات. ال ' [البريد الإلكتروني محمي] 'المتغير مفيد إذن ؛ لا تعرف حجم الإدخال ولا يمكنك أخذ الحجج الموضعية. ومن ثم ، يمكنك استخدام ' [البريد الإلكتروني محمي] 'بدلاً من تحديد وظيفة getopt مرارًا وتكرارًا. هنا مثال على استخدام الحلقات و [البريد الإلكتروني محمي] معًا في نص:

#! / بن / باش

على واحد = ( “$ @ ' )



إذا [ # دولار -Gt 1 ]

ومن بعد



يضيف = دولار ( ( {عدد [0]} دولار + {عدد [1]} دولار ) )

صدى صوت 'إضافة جميع الأرقام هي: إضافة $ '



الطرح = دولار ( ( {عدد [0]} دولار - {عدد [1]} دولار - {عدد [2]} دولار ) )

صدى صوت 'طرح الأرقام هو: الطرح $ '



تتضاعف = دولار ( ( {عدد [0]} دولار * {عدد [1]} دولار * {عدد [2]} دولار ) )

صدى صوت ضرب الأعداد هو: ضرب $ '



تقسيم 1 = دولار ( ( {عدد [0]} دولار / {عدد [1]} دولار ) )

صدى صوت 'تقسيم {عدد [0]} دولار و {عدد [1]} دولار هو: قسم 1 '



تقسيم 2 = دولار ( ( {عدد [1]} دولار / {عدد [2]} دولار ) )

صدى صوت 'تقسيم {عدد [1]} دولار و {عدد [2]} دولار هو: قسم 2 '



تقسيم 3 = دولار ( ( {عدد [0]} دولار / {عدد [2]} دولار ) )

صدى صوت 'تقسيم {عدد [0]} دولار و {عدد [2]} دولار هو: قسم 2 '



يكون

يقوم البرنامج النصي أعلاه بإجراء حسابات حسابية مختلفة بناءً على وسيطات سطر الأوامر. على سبيل المثال ، قمنا بإدخال 50 و 35 و 15 كإدخال:

استخدام المعلمات الموضعية

يمكنك الوصول إلى المعلمات الموضعية عند وصولهم إلى $ 1 أولاً ، ثم $ 2 ، وهكذا. على سبيل المثال ، دعنا ننشئ نصًا يقرأ اسمًا باعتباره الوسيط الأول ثم يقرأ اسم المدينة باعتباره الوسيط الثاني. ومع ذلك ، إذا مررت بالمدينة أولاً ثم الاسم ، فإنها تعتبر الاسم على أنها المدينة والعكس صحيح. دعنا نلقي نظرة أعمق على النص التالي لفهم هذا المفهوم:

#! / بن / باش

صدى صوت 'هذه هي التفاصيل التي تم إدخالها'

صدى صوت 'اسم $ 1'

صدى صوت 'مدينة $ 2'

تحتاج إلى إضافة الاسم والمدينة في وقت تنفيذ النص في الجهاز:

تغليف

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