2014-12-02 7 views
1

스크립트 (bash 쉘)가 있고 전달 된 인수가 숫자 범위 내에 있는지 확인하려면 case 문을 사용하여 어떻게 처리합니까? 예를 들어, 입력 된 인수가 숫자 10-20 인 경우에만 내 스크립트가 일련의 명령을 수행합니다. 그렇지 않으면 오류 메시지가 반환됩니다. If 문을 사용하여이 작업을 수행 할 수 있지만 case 문을 사용하는 방법을 알고 싶습니다. 나는 다른 페이지를 읽었습니다,하지만 그것은 의미 할 수 있도록하지 않습니다case 문을 사용하여 변수 확인

case $1 in 
10 
*command executed 
11 
*command executed 
etc... 

답변

4

이 일을보십시오 :

if (($1 >= 10 && $1 <=20)); then 
    echo "Correct range" 
else 
    echo >&2 "Incorrect range" 
fi 

내가 bash arithmetic를 사용합니다. 여기서 case 문을 사용하면 약간 비효율적 인 것 같습니다.

당신이 case 엉 할 주장하는 경우 :

case $1 in 
    1[0-9]|20) echo "Correct range" ;; 
    *) echo >&2 "Incorrect range" ;; 
esac 
2

당신은 가능한 값의 목록을 표시하기 위해 괄호를 사용할 수 있습니다

case $1 in 
1[0-9]|20) 
    echo "All is well. I will run the command." 
    ;; 
*) 
    echo "All is not well! You are a fool to tell me such a number!" 
    ;; 
esac 

이 경우 문에 대한 자세한 내용을보기를 in the Bash Beginner's Guide

+0

두 가지 제안이 모두 작동합니다. 감사합니다. – swam

1

을 사용하면 유용 할 수 있습니다.

case 1 in 
    $(($1 >= 10 && $1 < 20))) echo '10-19';; 
    $(($1 >= 20 && $1 < 30))) echo '20-29';; 
    $(($1 >= 30 && $1 < 40))) echo '30-39';; 
esac 
관련 문제