2011-12-19 4 views
2

매개 변수를 허용하는 bash 스크립트를 작성하고 있습니다. 나는 그것을 달성하기 위해 getopts를 사용하고있다.getopts가 작동하지 않습니다 - bash

#!/bin/bash 

while getopts ":a" opt; do 
    case $opt in 
    a) 
     echo "-a was triggered!" >&2 
     ;; 
    \?) 
     echo "Invalid option: -$OPTARG" >&2 
     ;; 
    esac 
done 

위의 코드 반환 값은 나에게이 오류입니다.

'etOpts_test.sh: line 4: syntax error near unexpected token `in 
'etOpts_test.sh: line 4: ` case $opt in 

난 당신이 아마 case "$opt" in (인용 $opt를) 원하는 라인 4에

답변

1

가상 코어 5.5을 사용하고 있습니다. 그렇지 않으면 메타 문자가 포함되어 있으면 실패 할 수 있습니다. 하지 , :

+0

을 그리고 그것은 작동합니다. – pahan

3

그것은 있어야 할 인수를 필요로하는 플래그를 나타 내기 위해, 또한 와일드 카드 기호의 역할로 표시가 인용하지 않아야 질문. 전체 코드는 (또한 플래그 -h 복용하지 인수 시연) 될 것이다 : 난 그냥 스크립트 본체를 청소

function usage { 
    echo "usage: ..." 
} 

a_arg= 
while getopts a:h opt; do 
    case $opt in 
    a) 
     a_arg=$OPTARG 
     ;; 
    h) 
     usage && exit 0 
     ;; 
    ?) 
     usage && exit 2 
     ;; 
    esac 
done 
+0

나는 당신이 옳다고 믿습니다. 그러나 : 나는 왜 일하는지 모른다. 방금 스크립트 본문을 청소했고 이제 작동합니다. – pahan

+0

파항 - $ OPTARG도 ": a"로 올바르게 채워 졌습니까? – bobah

관련 문제