مدخلات المستخدم في الـ Scripts
جزء من قسم الأساسيات في رحلة Terminal على Coddy. الدرس 69 من 82.
المتغيرات مفيدة، لكنك قد ترغب أحيانًا في أن يطلب البرنامج النصي من المستخدم معلومات أثناء تشغيله. يوقف الأمر read البرنامج النصي مؤقتًا وينتظر من المستخدم كتابة شيء ما، ثم يخزّن ذلك الإدخال في متغير.
إليك كيفية عمله:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"عند تشغيل هذا البرنامج النصي، يطبع السؤال، وينتظر حتى يكتب المستخدم اسمه ويضغط على Enter، ثم يحيّيه. يأخذ الأمر read كل ما يكتبه المستخدم ويخزّنه في المتغير name.
يمكنك جعل المطالبة أكثر ترتيبًا باستخدام الراية -p، التي تجمع بين رسالة المطالبة والإدخال في السطر نفسه:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"يعرض هذا Enter your name: وينتظر الإدخال في السطر نفسه، مما يبدو أكثر احترافية. يأخذ الخيار -p نص المطالبة كوسيط له، متبوعًا باسم المتغير لتخزين الإدخال.
تجعل مدخلات المستخدم البرامج النصية تفاعلية وقابلة للتكيّف. وبدلًا من تضمين القيم في الشيفرة بشكل ثابت، يمكنك كتابة برنامج نصي واحد يعمل بطريقة مختلفة استنادًا إلى ما يقدّمه المستخدم في كل مرة يشغّله فيها.
التحدي
سهلأنشئ برنامجًا نصيًا للصدفة باسم greeter.sh يطلب من المستخدم لونه المفضل، ثم يعرض رسالة باستخدام إدخاله.
يجب أن يقوم البرنامج النصي بما يلي:
- يبدأ بسطر shebang (
#!/bin/bash) - يستخدم
readمع الخيار-pلعرض المطالبة:What is your favorite color? - يخزّن الإدخال في متغير يسمى
color - يستخدم
echoلطباعة:Nice! [color] is a great color!(حيث إن [color] هو إدخال المستخدم)
اجعل البرنامج النصي قابلًا للتنفيذ، ثم شغّله باستخدام blue كإدخال. هذه الطرفية تفاعلية، ولا يمكنها التوقف والانتظار حتى تكتب، لذا أرسل الإجابة إلى البرنامج النصي باستخدام أنبوب:
echo "blue" | ./greeter.shيجب أن يكون الناتج:
Nice! blue is a great color!ملاحظة: لا تظهر مطالبة
What is your favorite color?هنا. لا يطبعread -pمطالبته إلا عندما يأتي الإدخال من لوحة مفاتيح، بينما يأتي الإدخال هنا من الأنبوب.
أحط كل سطر تكتبه بين علامتي اقتباس مفردتين:
echo 'echo "Hello $name"' >> script.sh. تمنع علامات الاقتباس المفردة الصدفة من استبدال$nameأثناء كتابة الملف، لذلك يحتفظ البرنامج النصي بالمتغير ويوسّعه عند تشغيله. أما علامات الاقتباس المزدوجة فستستبدل القيمة فورًا.
تلميح: أنشئ البرنامج النصي سطرًا سطرًا باستخدام
echoمع إعادة التوجيه. استخدمread -p "What is your favorite color? " colorلعرض المطالبة والتقاط الإدخال، ثم استخدمecho "Nice! $color is a great color!"لعرض النتيجة.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
7محتوى الملف
Head و Tailعد الكلمات (Word Count)أمر Sortأمر Uniqueأساسيات GrepGrep مع الخياراتملخص - محقق النصوص13أساسيات برمجة Shell
ما هو Shell Script؟إنشاء وتشغيل Scriptالمتغيرات في الـ Scriptsمدخلات المستخدم في الـ Scriptsجملة If الشرطيةحلقة For التكراريةحلقة While التكراريةمراجعة - مخمن الأرقام2التنقل
عرض مسار المجلد الحاليعرض الملفاتتغيير المجلدالمسارات المطلقة مقابل المسارات النسبيةمجلد المنزل ومجلد الجذرخلاصة - حدد مسارك8إعادة التوجيه
المخرجات القياسيةالكتابة فوق ملفالإضافة إلى ملفالمدخلات القياسيةالخطأ القياسيمراجعة - بناء سجل الأحداث11الأذونات
فهم الأذوناتقراءة الأذوناتChmod باستخدام الأرقامChmod باستخدام الرموزملكية الملفاتملخص - إحكام الحماية14مشروع سكربت النسخ الاحتياطي
نظرة عامة على المشروعالحصول على مسار المصدرتدرّب بنفسك: Playground لـ Terminal