Басх сачекајте притискање тастера

Bash Wait Keypress



Команда `реад` се користи за унос корисничког уноса у басх скрипту. Можемо унети унос у басх скрипту користећи различите врсте опција са наредбом реад. Понекад морамо написати скрипту на такав начин да ће се скрипта изводити све док се не притисне одређени тастер или се одређена скрипта изврши на основу одређеног кључа или ће програм сачекати одређено време док се не притисне било који тастер. Како можете написати басх скрипту да чека на било који кључ или кључ за неке задатке приказано је у овом водичу помоћу различитих примера.

Пример#1:

Направите басх датотеку са следећом скриптом. Када покренете скрипту, она ће се наставити све док корисник не притисне било који тастер. Скрипта ће чекати на унос корисника сваке 3 секунде и ако корисник не притисне ниједан тастер, одштампаће поруку, чекајући притисак на тастер .







#!/бин/басх
Избацио 'Притисните било које дугме да бисте наставили'
док [ истина ];урадити
читати 3 1
ако [ $?=0 ];онда
излаз;
елсе
Избацио 'чекајући притисак на тастер'
бити
Готово

Покрените скрипту.



$басхкеи1.сх

Излаз:







Пример#2:

Направите басх датотеку са следећом скриптом. Бесконачна вхиле петља се користи у овом примеру која ће се завршити када корисник притисне „к“. Ако корисник притисне било који тастер без „к“, вредност променљиве бројача ће се повећати за 1 и одштампати вредност.

#!/бин/басх
Избацио 'Притисните' к 'за излаз'
цоунт=0
док:;урадити
читати 1до<&1
ако [[ $ к= к]];онда
принтф ' нОдустајање од програма н'
пауза
елсе
((цоунт=$ цоунт+1))
принтф ' нПоновите за$ цоунтпута н'
Избацио 'Притисните' к 'за излаз'
бити
Готово

Покрените скрипту.



$басхкеи2.сх

Излаз:

Пример#3:

Направите басх датотеку са следећом скриптом која ће обављати различите врсте задатака на основу тастера који је притиснуо корисник. Ако корисник притисне „1“, он ће додати два аргумента командне линије и одштампати. Ако корисник притисне „2“, тада ће одузети два аргумента командне линије и одштампати. Скрипта ће се непрекидно извршавати све док корисник не притисне „3“.

#!/бин/басх
в1=1 УСД
в2=2 УСД
док:
урадити
Избацио '1. Додатак '
Избацио '2. Одузимање '
Избацио '3. Одустати'
Избацио „Тип 1 или 2 или 3:“
читати 1 петнаестдо
принтф ' н'
случају $ а у
1* ) Избацио '$ в1+$ в2=$ (($ в1+$ в2)) ';;

2* ) Избацио '$ в1-$ в2=$ (($ в1- $ в2)) ';;

3* ) излаз 0;;


* ) Избацио 'Покушајте поново.';;
есац
Готово

Покрените скрипту са две нумеричке вредности аргумента.

$басхкеи3.сх35 петнаест

Излаз:

Пример#4:

Направите басх датотеку са следећом скриптом. Скрипта ће се завршити када корисник притисне тастер ЕСЦ. Ова скрипта ће штампати тастере које корисник притисне све док не притисне тастер ЕСЦ.

#!/бин/басх
усеринпут=''
Избацио 'Притисните тастер ЕСЦ да бисте изашли'
# прочитајте један знак
док читати -н1кључ
урадити
# иф инпут == ЕСЦ кључ
ако [[ $ кључ== $'И' ]];
онда
пауза;
бити
# Додајте кључ променљивој коју корисник притисне.
усеринпут+=$ кључ
Готово
принтф ' нУписали сте:$ усеринпут н'

Покрените скрипту.

$басхкеи4.сх

Излаз:

Пример#5:

Направите басх датотеку са следећим кодом која ће чекати да тастер ЕНТЕР заврши скрипту. Скрипта ће узети име сервера као улаз и покушаће да пингује сервер на сваке 2 секунде. Ако команда пинг добије одговор од сервера, она ће прекинути скрипту приказивањем излаза, у супротном ће сачекати одговор корисника или тастер ЕНТЕР штампањем поруке, Покушавајући да се повеже са….

#!/бин/басх
Избацио 'Унесите адресу сервера коју желите да пингујете'
читатисервер
док ! пинг 1 -ИН 2 $ сервер
урадити
Избацио 'Покушавам да се повежем са$ сервер'
Избацио 'Притисните [ЕНТЕР] да бисте прекинули'
читати 1 1кључ
ако [[ $ кључ== $' к0а' ]];# иф инпут == ЕНТЕР тастер
онда
излаз 0
бити
Готово
принтф '%с н' '$ сервертрчи'

Покрените скрипту.

$басхкеи5.сх

Излаз:

Закључак:

Овај водич приказује како можете написати басх скрипту на различите начине који ће чекати да унос корисника изврши било који одређени задатак или прекине скрипту. Надам се да ћете након увежбавања горњих примера моћи да напишете скрипту на такав начин да може да сачека било који притисак на тастер и обави одређени задатак на основу тастера који је корисник притиснуо.