باش انتظر الضغط على مفتاح

Bash Wait Keypress



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

مثال 1:

قم بإنشاء ملف bash بالنص التالي. عندما تقوم بتشغيل البرنامج النصي ، سيستمر حتى يضغط المستخدم على أي مفتاح. سينتظر البرنامج النصي إدخال المستخدم كل 3 ثوانٍ وإذا لم يضغط المستخدم على أي مفتاح ، فسيتم طباعة الرسالة ، في انتظار الضغط على المفتاح .







#!/bin/bash
رما - طرد - قذف 'اضغط على أى زر للاستمرار'
في حين [ حقيقية ]؛فعل
اقرأ -t 3 1
لو [ =0 ]؛من ثم
خروج؛
آخر
رما - طرد - قذف 'انتظار الضغط'
يكون
انتهى

قم بتشغيل البرنامج النصي.



$سحقkey1.sh

انتاج:







المثال الثاني:

قم بإنشاء ملف bash بالنص التالي. يتم استخدام حلقة while اللانهائية في هذا المثال والتي ستنتهي عندما يضغط المستخدم على 'q'. إذا ضغط المستخدم على أي مفتاح بدون 'q' ، فستتم زيادة قيمة متغير العداد بمقدار 1 وطباعة القيمة.

#!/bin/bash
رما - طرد - قذف اضغط على 'q' للخروج
عدد=0
في حينفعل
اقرأ 1إلى<&1
لو [[ ك= ف]]؛من ثم
printf 'نالانسحاب من البرنامجن'
استراحة
آخر
((عدد=عدد الدولارات+1))
printf 'نكرر لعدد الدولاراتمراتن'
رما - طرد - قذف اضغط على 'q' للخروج
يكون
انتهى

قم بتشغيل البرنامج النصي.



$سحقkey2.sh

انتاج:

المثال الثالث:

قم بإنشاء ملف bash بالبرنامج النصي التالي الذي سيقوم بأنواع مختلفة من المهام بناءً على المفتاح الذي ضغط عليه المستخدم. إذا ضغط المستخدم على '1' ، فسيضيف وسيطتي سطر أوامر ويطبع. إذا ضغط المستخدم على '2' ، فسيطرح وسيطتي سطر أوامر ويطبع. سيتم تشغيل النص بشكل مستمر حتى يضغط المستخدم على '3'.

#!/bin/bash
الإصدار 1=1 دولار
الإصدار 2=2 دولار
في حين:
فعل
رما - طرد - قذف '1. إضافة'
رما - طرد - قذف 2. الطرح '
رما - طرد - قذف 3. استقال'
رما - طرد - قذف 'اكتب 1 أو 2 أو 3:'
اقرأ 1 -t خمسة عشرإلى
printf 'ن'
قضية $ أ في
1* ) رما - طرد - قذف 'v1 دولار+v2 دولار=$ (($ v1 + $ v2)) '؛؛

2* ) رما - طرد - قذف 'v1 دولار-v2 دولار=$ (($ v1- $ v2)) '؛؛

3* ) خروج 0؛؛


* ) رما - طرد - قذف 'حاول مجددا.'؛؛
esac
انتهى

قم بتشغيل البرنامج النصي بقيمتين رقميتين للوسيطة.

$سحقkey3.sh35 خمسة عشر

انتاج:

المثال الرابع:

قم بإنشاء ملف bash بالنص التالي. سينتهي البرنامج النصي عندما يضغط المستخدم على مفتاح ESC. سيقوم هذا البرنامج النصي بطباعة المفاتيح التي ضغط عليها المستخدم حتى يتم الضغط على مفتاح ESC.

#!/bin/bash
إدخال المستخدم='
رما - طرد - قذف 'اضغط على مفتاح ESC للإنهاء'
# قراءة حرف واحد
في حين اقرأ -r -n1مفتاح
فعل
# إذا كان الإدخال == مفتاح ESC
لو [[ مفتاح $== دولار'و' ]]؛
من ثم
استراحة؛
يكون
# أضف المفتاح إلى المتغير الذي يضغط عليه المستخدم.
إدخال المستخدم + =مفتاح $
انتهى
printf 'نلقد كتبت:$ userinputن'

قم بتشغيل البرنامج النصي.

$سحقkey4.sh

انتاج:

المثال الخامس:

قم بإنشاء ملف bash بالرمز التالي الذي سينتظر مفتاح ENTER لإنهاء البرنامج النصي. سيأخذ النص البرمجي اسم خادم كمدخل وسيحاول اختبار اتصال الخادم كل ثانيتين. إذا حصل أمر ping على استجابة من الخادم ، فسينهي البرنامج النصي عن طريق عرض الإخراج وإلا سينتظر استجابة المستخدم أو مفتاح ENTER بطباعة الرسالة ، محاولة الاتصال بـ….

#!/bin/bash
رما - طرد - قذف 'أدخل عنوان الخادم الذي تريد اختبار الاتصال'
اقرأالخادم
في حين ! بينغ 1 -في 2 خادم $
فعل
رما - طرد - قذف 'أحاول التواصل معخادم $'
رما - طرد - قذف 'اضغط [ENTER] للإنهاء'
اقرأ 1 -t 1مفتاح
لو [[ مفتاح $== دولار'x0a' ]]؛# إذا كان الإدخال == مفتاح الإدخال
من ثم
خروج 0
يكون
انتهى
printf '٪سن' 'خادم $يركض'

قم بتشغيل البرنامج النصي.

$سحقkey5.sh

انتاج:

استنتاج:

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