2016-08-30 2 views
0

Y/y를 입력하거나 10 초 동안 (키를 누르지 않은 경우) 기다리고 스크립트를 종료하는 옵션을 내 스크립트에 쓰려고합니다. 예를 들어 스크립트를 실행중인 경우 Y/y를 입력하면 작동합니다. 10 초를 기다렸을 때 아무 것도 입력되지 않으면 작동합니다.쉘 스크립트 : 케이스에서 아무 키도 누르지 않으면 읽기 명령을 계속하는 방법?

지금까지 나는 Y/y로 작업하고 10 초를 기다렸지 만 아무 키도 누르지 않으면 종료 중입니다. 나는 그것이 내 사건으로 인한 것임을 알고 있지만, 스크립트를 정상적으로 계속하기 위해 아무 키도 누르지 않으면 옵션을 잡는 방법을 모른다.

지금까지

내 코드 :

read -t 10 "Enter Y/y or wait 10 seconds!" -n 1 -r REPLY 
    case $REPLY in 
    [yY]) 
       echo "correct";; 
     *) 
       echo "Terminating";; 
    esac 

감사합니다 :)

+0

나는이 질문을 이해하지 못한다. 아무 키도 누르지 않으면 원하는 동작은 무엇입니까? 'X' 키를 눌렀을 때 원하는 동작은 무엇입니까? 'N'키? – user1934428

+0

키를 누르지 않은 경우 원하는 동작은 스크립트가 정상적으로 계속 진행된다는 것입니다. Y/y와 동일합니다. Y/y 이외의 다른 키가 눌려지면 멈추어야합니다. – Momina

+0

케이스에 빈 문자열을 확인하기 만하면됩니다. – Momina

답변

0

디폴트는 N, 사용할 수 있도록하려면 :

read -t 10 "Enter Y/y or wait 10 seconds!" -n 1 -r REPLY 
case ${REPLY:-N} in 
    [yY]) 
    echo "correct";; 
    *) 
    echo "Terminating";; 
esac 

당신은 "Y로 기본을 원한다면 "사용 :

read -t 10 "Enter Y/y or wait 10 seconds!" -n 1 -r REPLY 
case ${REPLY:-Y} in 
    [yY]) 
    echo "correct";; 
    *) 
    echo "Terminating";; 
esac 

이 대구 e는 $REPLY에 기본값을 사용합니다. $REPLY이 설정되지 않았거나 비어 있으면 첫 번째 버전에서 "N"을, 두 번째 버전에서 "Y"로 대체합니다.

+0

타임 아웃이 성공하면'read'가 1을 반환한다는 사실을 사용할 수도 있습니다. 예 : '읽으면 -t 1 -p "Y/y를 입력하거나 10 초 기다린다"-n 1 -r REPLY && [[$ REPLY == [Yy]]]; then echo echo; fi' – Eric