14 getopts를 사용하여 일부 인수를 bash 스크립트로 구문 분석하고 옵션 목록에 포함되지 않은 나머지 인수에 액세스하려고합니다. 예를 들어 전화가 오면 % script -a -b param -c param -d other arguments here 나는 : while getopts "ab:c:d" opt ; do . done getopts에 의해 처리되지 않아야하는 "여기 다른 인수"를 얻는 가장 쉬운 방법은 무엇입니까? bash — 팀 소스
17 인수를 구문 분석하거나 넣을 때 이동해야합니다. 구문 분석을 마친 후 $ ((OPTIND -1))을 이동 한 다음 일반적인 방법으로 처리하십시오. while getopts "ab:c:d" opt ; do . done shift $(expr $OPTIND - 1 ) while test $# -gt 0; do echo $1 shift done — 포그 마 소스 1 각 getopts가 실행 된 후 $ OPTIND가 다음에 고려할 옵션의 색인이라고 설명 할 가치가 있습니다. 따라서 $ *는 첫 번째 유효한 호출에 이어 2이고, 두 번째 호출에 따라 3 개의 매개 변수를 포함합니다. 호출이 유효하지 않으면 이전 값으로 끊어집니다. 따라서 매개 변수 1이 유효하지 않으면 OPTIND는 1이됩니다 (따라서 위의 예 shift $(expr 1 - 1)는 안전합니다) — sibaz
0 구문 분석이 끝날 때 $ @ 변수를 이동하면 행의 끝이 포함됩니다. while getopts "ab:c:d" opt ; do . done shift $((OPTIND-1)) OTHERARGS=$@ — 브루노 메이 롯 소스
shift $(expr 1 - 1)
는 안전합니다)