תחכה בוש ללחיצת מקשים

Bash Wait Keypress



הפקודה 'read' משמשת לקלוט קלט משתמש בסקריפט bash. אנו יכולים לקחת קלט בסקריפט bash באמצעות סוגים שונים של אפשרויות עם פקודת הקריאה. לפעמים עלינו לכתוב את התסריט בצורה כזו שהתסריט יפעל עד ללחיצה על מקש ספציפי או שהסקריפט המסוים יבוצע על סמך המקש הספציפי או שהתוכנית תחכה לפרק הזמן הספציפי עד ללחיצה על מקש כלשהו. כיצד תוכל לכתוב סקריפט bash כדי לחכות לכל מפתח מסוים או כל מפתח למשימות מסוימות מוצג במדריך זה באמצעות דוגמאות שונות.

דוגמה מס '1:

צור קובץ bash עם הסקריפט הבא. כאשר תריץ את הסקריפט, הוא ימשיך עד שהמשתמש ילחץ על מקש כלשהו. התסריט יחכה לקלט המשתמש בכל 3 שניות ואם המשתמש לא ילחץ על כל מקש אז הוא ידפיס את ההודעה, מחכה ללוח המקשים .







#!/bin/bash
זרק 'לחץ על מקש כלשהו כדי להמשיך'
בזמן [ נָכוֹן ];לַעֲשׂוֹת
לקרוא 3 1
אם [ $?=0 ];לאחר מכן
יְצִיאָה;
אַחֵר
זרק 'מחכה ללחיצת המקשים'
לִהיוֹת
בוצע

הפעל את התסריט.



$לַחֲבוֹטkey1.sh

תְפוּקָה:







דוגמה מס '2:

צור קובץ bash עם הסקריפט הבא. נעשה שימוש בלולאה אינסופית של דוגמה זו שתסתיים כאשר המשתמש ילחץ על 'q'. אם המשתמש לוחץ על מקש כלשהו ללא 'q', ערך המשתנה המונה יוגדל ב -1 וידפיס את הערך.

#!/bin/bash
זרק 'לחץ על' q 'כדי לצאת'
לספור=0
בזמן:;לַעֲשׂוֹת
לקרוא 1ל<&1
אם [[ $ k= ש]];לאחר מכן
printf ' nעוזבים מהתוכנית n'
לשבור
אַחֵר
((לספור=ספירת $+1))
printf ' nחזר עלספירת $פִּי n'
זרק 'לחץ על' q 'כדי לצאת'
לִהיוֹת
בוצע

הפעל את התסריט.



$לַחֲבוֹטkey2.sh

תְפוּקָה:

דוגמה מס '3:

צור קובץ bash עם הסקריפט הבא שיבצע סוגים שונים של משימות על סמך המקש שהמשתמש לוחץ עליו. אם המשתמש לוחץ על '1' אז הוא יוסיף שני ארגומנטים של שורת הפקודה וידפיס. אם המשתמש לוחץ על '2', הוא יחסוך שני ארגומנטים של שורת הפקודה וידפיס. התסריט יפעל ברציפות עד שהמשתמש ילחץ על '3'.

#!/bin/bash
v1=$ 1
v2=2 $
בזמן:
לַעֲשׂוֹת
זרק '1. חיבור'
זרק '2. חִסוּר'
זרק '3. לְהַפְסִיק'
זרק 'סוג 1 או 2 או 3:'
לקרוא 1 חֲמֵשׁ עֶשׂרֵהל
printf ' n'
מקרה $ א ב
1* ) זרק '$ v1+$ v2=$ (($ v1+$ v2)) ';;

2* ) זרק '$ v1-$ v2=$ (($ v1-$ v2)) ';;

3* ) יְצִיאָה 0;;


* ) זרק 'נסה שוב.';;
esac
בוצע

הפעל את הסקריפט עם שני ערכי ארגומנט מספריים.

$לַחֲבוֹטkey3.sh35 חֲמֵשׁ עֶשׂרֵה

תְפוּקָה:

דוגמה מס '4:

צור קובץ bash עם הסקריפט הבא. התסריט יסתיים כאשר המשתמש ילחץ על מקש ESC. סקריפט זה ידפיס את המקשים שהמשתמש לחץ עליו עד לחיצה על מקש ESC.

#!/bin/bash
קלט משתמש=''
זרק 'הקש על מקש ESC כדי לסיים'
# קראו דמות אחת
בזמן לקרוא -r -n1מַפְתֵחַ
לַעֲשׂוֹת
# אם קלט == מפתח ESC
אם [[ מפתח $== $' ו' ]];
לאחר מכן
לשבור;
לִהיוֹת
# הוסף את המפתח למשתנה עליו לוחץ המשתמש.
userinput+=מפתח $
בוצע
printf ' nהקלדת:קלט משתמש n'

הפעל את התסריט.

$לַחֲבוֹטkey4.sh

תְפוּקָה:

דוגמה מס '5:

צור קובץ bash עם הקוד הבא שימתין למפתח ENTER כדי לסיים את התסריט. הסקריפט יקבל שם שרת כקלט וינסה לבצע פינג של השרת בכל 2 שניות. אם פקודת ping תקבל את התגובה מהשרת אז היא תסיים את הסקריפט על ידי הצגת הפלט אחרת היא תחכה לתגובת המשתמש או למפתח ENTER על ידי הדפסת ההודעה, מנסה להתחבר עם ....

#!/bin/bash
זרק 'הזן את כתובת השרת שברצונך לבצע פינג'
לקרואשרת
בזמן ! פינג 1 -IN 2 שרת $
לַעֲשׂוֹת
זרק 'מנסה להתחבר עםשרת $'
זרק 'הקש על [ENTER] כדי לסיים'
לקרוא -N 1 1מַפְתֵחַ
אם [[ מפתח $== $' x0a' ]];# אם קלט == מקש ENTER
לאחר מכן
יְצִיאָה 0
לִהיוֹת
בוצע
printf '%s n' 'שרת $רץ'

הפעל את התסריט.

$לַחֲבוֹטkey5.sh

תְפוּקָה:

סיכום:

הדרכה זו מראה כיצד ניתן לכתוב את סקריפט bash בדרכים שונות שיחכו לקלט המשתמש לבצע כל משימה ספציפית או לסיים את התסריט. תקווה, לאחר שתתרגל את הדוגמאות שלעיל, תוכל לכתוב את התסריט בצורה כזו שתוכל לחכות ללחיצת מקשים כלשהי ולבצע את המשימה המסוימת על סמך המקש שהמשתמש לוחץ עליו.