2014-09-23 2 views
0

.sh 파일에 대한 경로 목록이있는 파일이 있지만 스크립트를 실행하려면 날짜가 필요합니다. 날짜는 YYYYMMD입니다. 스크립트 목록을 실행하는 스크립트를 실행하면 사용자에게 read 명령을 사용하여 날짜를 묻습니다.표준 입력 (읽기 명령)의 숫자 만 허용합니다.

내 문제는 사용자가 입력 한 날짜가 적어도 모든 숫자임을 100 % 확신해야한다는 것입니다. 어떻게해야합니까? 나는 이미 입력 된 최대 문자가 8인지 확인했습니다. 그래서 필요한 것은 숫자 입력 만 허용하는 것입니다. 이것은 내가 지금까지 가지고있는 전부이다.

echo 'Input date (YYYYMMDD)' 
read -n 8 date 

아이디어가 있으십니까?

고마워요.

답변

0

"0 ~ 9에서 8 개 숫자". 해결책은 입력 변수를 정규 표현식과 비교하는 것입니다. 그러나 어떤 이유로이 직접적으로 작동하지 않는, 그래서 정규 표현식을 변수에 저장하고 변수를 비교했습니다.

reg='^[0-9]{8}$' 
while [[ ! $number =~ $reg ]] 
do 
echo 'The format is wrong' 
done 

^< - 라인의 시작

[0-9] {8} < - 0 내지 8 참조

< $ 9 - 라인의 끝

= ~ < - 정규 표현식이 답변이 도움이

희망을 비교!

감사합니다

PS : 사람이 그 일을 할 때 비교가 작동하지 않은 이유를 알고 있다면 직접 알려 주시기 바랍니다.

1

당신은 while 루프를 사용한다 : ^[0-9]{8} 의미

number="" 
while [[ ! $number =~ ^[0-9]{8} ]]; do 
    echo Please enter your age 
    read number 
done 

내가 내 문제를 해결 한 @Thomas에서 도움을 가진 후

+0

음, 작동하지 않습니다. 구문 오류가 발생했습니다. 이미 시도했습니다. 시도했습니다. 'while [[$ number! = [0-9] {8}]] – Juanpe

+0

@GaryPerry 오류? –

+0

'line 50 : 52 행의 구문 오류 : ~ (E)^[0-9] {8}] ' – Juanpe

관련 문제