Bash는 키 누름을 기다립니다.

Bash Wait Keypress



`read` 명령은 bash 스크립트에서 사용자 입력을 받는 데 사용됩니다. 읽기 명령과 함께 다양한 유형의 옵션을 사용하여 bash 스크립트에서 입력을 받을 수 있습니다. 특정 키를 누를 때까지 스크립트가 실행되거나 특정 키를 기반으로 특정 스크립트가 실행되거나 프로그램이 키를 누를 때까지 특정 시간 동안 대기하도록 스크립트를 작성해야 하는 경우가 있습니다. 특정 키 또는 일부 작업에 대한 키를 기다리도록 bash 스크립트를 작성하는 방법은 다른 예제를 사용하여 이 튜토리얼에서 보여줍니다.

예 #1:

다음 스크립트를 사용하여 bash 파일을 만듭니다. 스크립트를 실행하면 사용자가 아무 키나 누를 때까지 계속됩니다. 스크립트는 3초마다 사용자의 입력을 기다리고 사용자가 아무 키도 누르지 않으면 메시지를 인쇄합니다. 키 누르기를 기다리는 중 .







#!/bin/bash
던졌다 '계속하려면 아무 키나 누르세요'
동안 [ 진실 ];~하다
읽다 -NS -N 1
만약 [ $?=0 ];그 다음에
출구;
또 다른
던졌다 '키 누르기를 기다리는 중'
~이다
완료

스크립트를 실행합니다.

$세게 때리다키1.sh

산출:

예 #2:

다음 스크립트를 사용하여 bash 파일을 만듭니다. 이 예제에서는 사용자가 'q'를 누를 때 종료되는 무한 while 루프가 사용되었습니다. 사용자가 'q' 없이 아무 키나 누르면 카운터 변수의 값이 1씩 증가하고 값을 인쇄합니다.

#!/bin/bash
던졌다 '종료하려면 'q'를 누르세요'
세다=0
동안::~하다
읽다 -N 1에게<&1
만약 [[ $ k= q]];그 다음에
인쇄 'N프로그램 종료N'
부서지다
또 다른
((세다=$count+1))
인쇄 'N반복$count타임스N'
던졌다 '종료하려면 'q'를 누르세요'
~이다
완료

스크립트를 실행합니다.

$세게 때리다키2.sh

산출:

예 #3:

사용자가 누른 키에 따라 다양한 유형의 작업을 수행하는 다음 스크립트를 사용하여 bash 파일을 만듭니다. 사용자가 '1'을 누르면 두 개의 명령줄 인수를 추가하고 인쇄합니다. 사용자가 '2'를 누르면 두 개의 명령줄 인수를 빼서 인쇄합니다. 스크립트는 사용자가 '3'을 누를 때까지 계속 실행됩니다.

#!/bin/bash
v1=$ 1
v2=$ 2
동안:
~하다
던졌다 '1. 덧셈'
던졌다 '2. 빼기'
던졌다 '삼. 그만두 다'
던졌다 -N '유형 1 또는 2 또는 3 :'
읽다 -N 1 -NS 열 다섯에게
인쇄 'N'
사례 $ ~에
1* ) 던졌다 '$v1+$v2=$(($v1+$v2)) ';;

2* ) 던졌다 '$v1-$v2=$(($v1-$v2)) ';;

* ) 출구 0;;


* ) 던졌다 '다시 시도하십시오.';;
이삭
완료

두 개의 숫자 인수 값으로 스크립트를 실행하십시오.

$세게 때리다키3.sh35 열 다섯

산출:

예 #4:

다음 스크립트를 사용하여 bash 파일을 만듭니다. 사용자가 ESC 키를 누르면 스크립트가 종료됩니다. 이 스크립트는 ESC 키를 누를 때까지 사용자가 누른 키를 인쇄합니다.

#!/bin/bash
사용자 입력=''
던졌다 '종료하려면 ESC 키를 누르십시오'
# 한 글자 읽기
동안 읽다 -NS -n1열쇠
~하다
# 입력 == ESC 키인 경우
만약 [[ $키== $'그리고' ]];
그 다음에
부서지다;
~이다
# 사용자가 누른 변수에 키를 추가합니다.
사용자 입력+=$키
완료
인쇄 'N다음을 입력했습니다.$userinputN'

스크립트를 실행합니다.

$세게 때리다키4.sh

산출:

예 #5:

ENTER 키를 눌러 스크립트를 종료할 때까지 기다리는 다음 코드로 bash 파일을 만듭니다. 스크립트는 서버 이름을 입력으로 사용하고 2초마다 서버에 ping을 시도합니다. ping 명령이 서버로부터 응답을 받으면 출력을 표시하여 스크립트를 종료합니다. 그렇지 않으면 연결 시도 중...이라는 메시지를 인쇄하여 사용자의 응답 또는 ENTER 키를 기다립니다.

#!/bin/bash
던졌다 '핑할 서버 주소를 입력하세요'
읽다섬기는 사람
동안 ! -씨 1 -N -에 2 $서버
~하다
던졌다 '와 연결하려고$서버'
던졌다 '종료하려면 [ENTER]를 누르십시오.'
읽다 -NS -N 1 -NS 1열쇠
만약 [[ $키== $' x0a' ]];# 입력 == ENTER 키인 경우
그 다음에
출구 0
~이다
완료
인쇄 '%NSN' '$서버실행 중'

스크립트를 실행합니다.

$세게 때리다키5.sh

산출:

결론:

이 튜토리얼은 사용자 입력이 특정 작업을 수행하거나 스크립트를 종료하기를 기다리는 다양한 방법으로 bash 스크립트를 작성하는 방법을 보여줍니다. 위의 예를 연습한 후에는 모든 키 누름을 기다리고 사용자가 누른 키를 기반으로 특정 작업을 수행할 수 있는 방식으로 스크립트를 작성할 수 있기를 바랍니다.