2017-10-26 1 views
0

getopts를 사용할 옵션 기반 bash 스크립트로 작업 중입니다. 이 스크립트에는 여러 옵션을 허용 할 수있는 경우와 하나의 옵션 만 허용하는 특정 경우가 있습니다. 몇 가지 사례를 테스트하면서이 문제에 대한 의사 코드로 축소 된이 문제에 부딪혔습니다.

for arg in "[email protected]"; do 
    echo ${arg} 
done 
echo "end" 

반환 아래 실행 : 나는 bash는 4.1.2을 실행하고

$ ./test.sh -a -b 
-a 

end 

, 왜 안되는 -b가 빈 줄에 반환? 나는 이것이 '-'와 관련이 있다고 가정합니다.

답변

5

내가 정확한 오류를 재현 할 수는 없지만이 echo 사용의 위험 : $arg 유효한 옵션입니다 경우, 인쇄 등이 아닌 문자열로 처리됩니다. 대신 printf을 사용하십시오 :

+2

그러나'-b' 또는'-a'는'echo'에 유효한 플래그가 아닙니다. 대답은 괜찮지 만 궁금해 OP의 출력이 잘못되었습니다 – Inian

+0

맞음; 나는 왜'-b'가'echo'에 의해 옵션으로 취급되는 것처럼 보이는지 모르겠습니다. – chepner

+0

어쨌든, 이것은'-n'과 함께 문제가 있었을 것이고 해결책은 동일합니다 –

관련 문제