English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يستخدم الأمر read في Linux لقراءة أرقام من المدخل القياسي.
يستخدم الأمر الداخلي read لقراءة سطر واحد من المدخل القياسي. يمكن استخدام هذا الأمر لقراءة إدخال لوحة المفاتيح، عندما يتم استخدامه مع توجيه النص، يمكن قراءة سطر من ملف.
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
شرح المعلمات:
1- قراءة بسيطة
#!/bin/bash #يتم التبديل إلى السطر التالي بشكل افتراضي echo "ادخل اسم الموقع: " # قراءة الإدخال من لوحة المفاتيح read website echo "اسم الموقع الذي أدخلتة هو $website" exit 0 # الخروج
نتيجة الاختبار هي:
إدخال اسم الموقع: ar.oldtoolbag.com اسم الموقع الذي أدخلتة هو ar.oldtoolbag.com
2、يسمح معلمت -p بتخصيص إشارة التوجيه مباشرةً في سطر الأمر read.
#!/bin/bash read -p "إدخال اسم الموقع:" website echo "اسم الموقع الذي أدخلتة هو $website" exit 0
نتيجة الاختبار هي:
إدخال اسم الموقع:ar.oldtoolbag.com اسم الموقع الذي أدخلتة هو ar.oldtoolbag.com
3、يحدد معلمت -t عدد الثواني التي ينتظرها الأمر read للإدخال، عند انتهاء العد التنازلي، يعود الأمر read بحالة خروج غير صفر.
#!/bin/bash if read -t 5 -p "إدخال اسم الموقع:" website then echo "اسم الموقع الذي أدخلتة هو $website" else echo "\nآسف، لقد تجاوزت وقت الإدخال المحدد." fi exit 0
عند تنفيذ البرنامج، لا يتم إدخال أي شيء، ينتظر 5 ثواني:
إدخال اسم الموقع: آسف، لقد تجاوزت وقت الإدخال المحدد
4、بالإضافة إلى وقت العد التنازلي، يمكنك أيضًا استخدام -n إعداد المعلمات read يحسب الأمر عدد الحروف المدخلة. عند الوصول إلى عدد معين من الحروف، يتم الخروج تلقائيًا ويتم تخصيص البيانات المدخلة للمتغير.
#!/bin/bash read -n1 -p "هل ترغب في الإستمرار [Y/N]?" answer case $answer in Y | y) echo "fine ,continue";; N | n) echo "ok,good bye";; *) echo "error choice";; esac exit 0
استخدم هذا المثال -n مع القيمة 1، مما يعني أن الأمر read يتوقف عن الاستقبال عند الوصول إلى عدد معين من الحروف، ويقوم بتحويل البيانات إلى المتغير. إذا تم الضغط على حرف واحد فقط، يتم استقبال الإدخال فوراً دون الحاجة إلى الضغط على مفتاح Enter.
يغادر بعد استقبال 2 إدخال فقط:
#!/bin/bash read -n2 -p "الرجاء إدخال رمزين عشوائيين: " any echo "\nالرمزين الذي أدخلتها هو:$any" exit 0
عند تنفيذ البرنامج، أدخل رمزين:
الرجاء إدخال رمزين عشوائيين: 12 الرمزين الذي أدخلتها هو:12
5、-s يستطيع الخيار read لا يتم عرض البيانات المدخلة في واجهة الأوامر (في الواقع، يتم عرض البيانات، ولكن read يضبط الأمر لون النص لتكون نفس لون الخلفية). يستخدم هذا الخيار عادةً لقراءة كلمة المرور.
#!/bin/bash read -s -p "الرجاء إدخال كلمة المرور الخاصة بك:" pass echo "\nكلمة المرور التي أدخلتها هي $pass" exit 0
عند تنفيذ البرنامج، لا يتم عرض كلمة المرور المدخلة:
الرجاء إدخال كلمة المرور الخاصة بك: كلمة المرور التي أدخلتها هي w3codebox
6. قراءة الملف
كل مرة يتم فيها استدعاء أمر read، يتم قراءة "سطر" نصي من الملف. عند عدم وجود سطور قابلة للقراءة في الملف، يخرج أمر read بناءً على حالة غير صفر.
كيفية نقل بيانات الملف إلى أمر read؟ باستخدام أمر cat وبإعادة توجيه الناتج مباشرة إلى أمر while الذي يحتوي على أمر read.
محتوى ملف الاختبار test.txt كالتالي:
123 456 w3codebox
كود الاختبار:
#!/bin/bash count=1 # جملة تخصيص، بدون مسافة cat test.txt | while read line # إدخال مخرجات أمر cat كمدخل لأمر read, يوضع القيمة التي تلي > في line do echo "السطر $count:$line" count=$[ $count + 1 ] # لاحظ المسافة في الدوائر done echo "finish" exit 0
نتيجة التنفيذ هي:
السطر 1:123 السطر 2:456 السطر 3:w3codebox finish
استخدام -e المعلمات، إليك مثال على إدخال الحروف a ثم انقر Tab الضغط على المفتاح سيقوم بإخراج الأسماء ذات الصلة (الملفات موجودة في هذا الدليل):
$ read -e -p "ادخل اسم الملف:" str ادخل اسم الملف: a a.out a.py a.pyc abc.txt ادخل اسم الملف: a