Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مدخلات المستخدم في الـ 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 نص المطالبة كوسيط له، متبوعًا باسم المتغير لتخزين الإدخال.

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

challenge icon

التحدي

سهل

أنشئ برنامجًا نصيًا للصدفة باسم greeter.sh يطلب من المستخدم لونه المفضل، ثم يعرض رسالة باستخدام إدخاله.

يجب أن يقوم البرنامج النصي بما يلي:

  1. يبدأ بسطر shebang (#!/bin/bash)
  2. يستخدم read مع الخيار -p لعرض المطالبة: What is your favorite color?
  3. يخزّن الإدخال في متغير يسمى color
  4. يستخدم 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!" لعرض النتيجة.

جرّب بنفسك

الطرفية
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Terminal