2014-09-11 3 views
-1

사용자가 올바른 형식으로 데이터를 입력하고 있는지 확인하기 위해 스크립트에 검사를 구현하려고합니다.
4K
25K
17K :Bash 검사 특히 형식화 된 사용자 입력

  1. I 사용자가 직접 문자 'K'유효한 입력

    예 다음 양의 정수를 입력되도록 것이라는 체크 필요
    유효하지 않은 입력의 예
    2.1
    4J
    -2k
    I 필요한 것을
    경우 [입력이 올바른 형식이다]; 다음
    ...
    ...
    Fi를

편집 :
경우 :
지금까지 내가이 위해 가지고하는 것은 다음입니다! [[regex = ~^[1-9] + k $]];
하지만 이것이 작동하지 않는 것 같습니다. 어떤 아이디어?

  1. 이것은 다소 까다 롭습니다. 나는 사용자가 최소값과 최대 값 바로 아래에 'k'가오고 공백없이 대시로 구분 된 값의 범위를 입력하도록하는 점검이 필요하다. 공백없이 쉼표로 구분되는 여러 범위를 입력 할 수도 있습니다. 유효 입력

    예 :
    4K-5K
    1K-2K
    3K-6K, 1,000 - 9,000, 3K-8K
    2K-5K, 잘못된 입력 12K - 20K

    2.5-3 4K-10K
    4K-3K, 8K-9K
    7K - 9K는, -3-6
    내가 무엇이 필요
    [입력 형식이 올바른 경우]]; 다음
    ...
    ... 이것은 regular expressions in BASH를 사용 할 매우 합리적이다

답변

0


Fi를. 추가 세부 정보는 the Bash manual에서 확인할 수 있습니다.

singleinputregex='^[1-9][0-9]*k$' 
if [[ $singleinput =~ $singleinputregex ]]; then 
    # ... 
fi 

rangeinputregex='^[1-9][0-9]*k-[1-9][0-9]*k(,[1-9][0-9]*k-[1-9][0-9]*k)*$' 
if [[ $rangeinput =~ $rangeinputregex ]]; then 
    # ... 
fi 
+0

이것은 작동하지 않습니다. 솔루션이 필요합니다. 나는 당신이 가까이에 있다고 생각한다. – Ryan

+0

오타가 수정되었지만 "여전히 작동하지 않는다"는 아이디어가 없다면 더 디버깅하기가 더 어려울 것이다. 어쨌든, StackOverflow는 코드 작성 서비스가 아닙니다. 잘하면이 답변은 적절한 솔루션을 작성할 수있을만큼 가까운 거리에 있습니다.:) –

+0

글쎄, 당신이 * 기호를 사용하고 있습니다. 앞의 문자가 0 개 이상 일치하기 때문에 작동하지 않습니다. 사용자가 적어도 한 자리 숫자를 입력해야하므로 + 연산자 대신 *가 필요합니다. 지금 내가 가진 ! [[regex = ~^[1-9] [0-9] + k $]]; then 그리고 이것은 작동하지 않는 것 같습니다. 내가 사용하는 입력에 관계없이 전달할 수는 없다. 여기까지 귀하의 도움에 진심으로 감사드립니다. – Ryan