리눅스 재단표준 유틸리티 목록포함되지만 getopts
포함되지 않습니다 getopt
. 비슷하다그룹 열기Posix 유틸리티 목록.
동시에,Wikipedia의 표준 Unix 명령 목록포함되지만 getopt
포함되지 않습니다 getopts
. 마찬가지로 Linux용 Windows 하위 시스템(Ubuntu 기반, Debian 기반)도 포함되어 있지만 getopt
포함되지는 않습니다 getopts
.GNU 향상된 버전).
balter@spectre:~$ which getopt
/usr/bin/getopt
balter@spectre:~$ getopt -V
getopt from util-linux 2.27.1
balter@spectre:~$ which getopts
balter@spectre:~$
그렇다면 보다 표준적인 Linux 배포판(예: Debian, Red Hat, Ubuntu, Fedora, CentOS 등) 중 하나를 사용하는 사람에게 가장 자신 있는 배포판을 선택하려면 어떤 것을 선택해야 합니까?
노트:
내장과 실행 파일을 설명해준 Michael과 Muru에게 감사드립니다. 방금 우연히 발견했어요이것bash 내장 기능이 나열되어 있습니다.
답변1
which
잘못된 도구입니다. getopts
대개역시 내장형이군요:
현재 쉘 실행 환경에 영향을 주기 때문에
getopts
일반적으로 쉘의 일반 내장으로 제공됩니다.
~ for sh in dash ksh bash zsh; do "$sh" -c 'printf "%s in %s\n" "$(type getopts)" "$0"'; done
getopts is a shell builtin in dash
getopts is a shell builtin in ksh
getopts is a shell builtin in bash
getopts is a shell builtin in zsh
쉘 스크립트를 사용하는 경우에는 이를 안전하게 사용할 수 있습니다 getopts
.다른 이유들한쪽을 선호 getopts
하지만기준.
답변2
또한 다음과 같은 이유로 getopts
이 작업을 선호합니다 .getopt
getopt
결점
- 외부 유틸리티
- 레거시 버전에서는 빈 매개변수 문자열이나 공백이 포함된 매개변수를 처리할 수 없습니다.
getopts
이점
- 모든 POSIX 셸에서 작동하며 이식 가능합니다.
-a -b
다음 제품과 잘 어울립니다.-ab