2013-06-26 4 views
0
첫번째

의 인수로 두 번째 옵션을 복용 getopts`.은`나는 코드가

./eg2 -b -f 
    ./eg2: line 7: usage: command not found 
    minusa:,minusb:b,file_b:-f,minusc:,minusd:,minuse:,file_e:,minusf: 

그것은 -f으로 옵션 -b의 인수를 취하고있다 : 내가 좋아하는 스크립트를 실행합니다. 인쇄하고 싶은 반면 :

 [[ ${OPTARG} = -* ]] && usage "Invalid parameter \"${OPTARG}\" provided for agurment \"-${opt}!\"" 

정확히 어디에서 코드가 잘못 될까요? 또한 인수가없는 경우 옵션 -b-e, 나는 인쇄 할 :

[[ ${#OPTARG} -eq 0 ]] && usage "Argument \"-${opt}\" requires a parameter!${OPTARG}" 

이 친절하게 설명한다.

답변

1

getopts 줄에 "b"다음에 ":"를 넣었습니다. 그것은 그 후에 논쟁을 기대한다고 말한다. 다음 인수를 -b에 대한 인수처럼 취급하지 않으려면 해당 ":"를 제거하십시오.

+0

내 질문이 잘못되었습니다. getopts가 작동하는 방식을 이해하지만, 코드에서 누군가가'-b' 옵션을 넣고 인수없이 다음 옵션을 준다면이 조건을 넣어서 오류 메시지를 출력하고 싶습니다. '[[ [$ {OPTARG} = - *]] && usage "다음 옵션 대신 인수 $ {OPTARG} \"이 (가) "agurment에 대해 제공되었습니다"- $ {opt}! \ ""' 이전 옵션 –

0

[[ "${OPTARG}" =~ "^-[a-z]" ]] && echo "Invalid parameter \"${OPTARG}\" provided for agurment \"-${opt}!\""이 문제를 해결합니다 ... 감사합니다.