2013-01-22 1 views
0

이 유효한 옵션을 지정 내가 함께 코드 일하고있다 :배쉬 쉘 getops

TYPE="" 
FILE="" 

while getopts "t:f:" opt; do 
    case $opt in 
     t) TYPE="$OPTARG" 
      ;; 
     f) FILE="$OPTARG" 
      ;; 
    esac 
done 

if [ -z "$TYPE" ]; then 
    echo "No -t. Bye." 
    exit 1 # error 
else 
    if [ -n "$FILE" ]; then 
    echo "$TYPE and $FILE" 
    else 
    echo JUST $TYPE 
    fi 
fi 

그것은 $ 유형에 유효한 옵션을 지정할 수 있습니까? 예를 들어 유효한 유형 옵션은 다음과 같습니다

"echo "$TYPE and $FILE"" 

은 그렇지 않으면 오류가 메아리하고 종료 : 이러한 유형 중 하나가 유효한 인수로 지정된 경우

IMAGE, ZIP, DOC 

다음 스크립트는 기존의 라인을 실행합니다. 가능한가요?

+1

물론을, 당신은 무엇을 검색 한/시도? –

+0

이것은 가장 가까운 내가 찾을 수 있지만 적응할 수있는 방법을 밖으로 couldnt : http://stackoverflow.com/questions/4587076/how-to-create-a-bash-script-that-takes-arguments – Jimmy

답변

3

당신이 -t 스위치를 필터링해야하는 경우 :

(...) 
     t) 
      case $OPTARG in 
       img|image|doc) 
        TYPE="$OPTARG" 
       ;; 
       *) 
        echo >&2 "Unsupported type..." 
        exit 1 
       ;; 
      esac 
     ;; 
(...) 
+1

아마 ' t) case $ OPTARG in (img | image | doc) TYPE = $ OPTARG ;; ...'더 좋을 수도 있습니다 –

+0

답장을 보내 주셔서 감사합니다. 나는 약간의 당신의 예제로 혼란 스러울 때, 나는 여전히 getopts "t : f :"opt; 줄을 써라? – Jimmy

+0

여기 구현하는 방법을 짐작했지만 https://gist.github.com/4599218에 대해 오해하고 있다고 걱정합니다. – Jimmy