매개변수와 옵션의 의미 변경에 대한 혼동에 대한 공식적인 표준 정의가 있나요?

매개변수와 옵션의 의미 변경에 대한 혼동에 대한 공식적인 표준 정의가 있나요?

명령 구문의 옵션과 매개변수가 무엇인지 이해하는 데 혼란스러운 변화가 발생했습니다.

예를 들어 저는 다음과 같은 정의를 접했습니다.

  • command -a -b -c d e f

    그들 사이에는 몇 가지 차이점이 있습니다 -a -b -c. 옵션이나 스위치라고 부르거나 d e f매개변수라고 부릅니다.

  • command -a -b -c d e f

    bash매뉴얼 과 같은 일부에서는 모든 -a -b -c d e f매개변수를 호출하고 설명하며, 모든 매개변수는 $1 $2 $3 $4 $5 $6스크립트에서 개별적으로 액세스할 수 있습니다.

  • command -a b=c

    일부 호출 -a옵션, b인수 및 c값이 있지만 일부는 이전 두 지점처럼 이들을 혼합하여 모든 -a b c인수를 하나의 형식으로 호출합니다.

이 세 가지 버전은 너무 다양한 호출 유형의 예일 뿐이므로 모두 나열하는 방법조차 모르지만 설정된 명명 규칙이 확실히 없다는 것을 알았습니다.

또는 적어도 여러 무작위 소스에서 접한 표준화된 명명 규칙이 없다는 것을 알고 있지만 공식 Linux 및 GNU 제휴 사이트나 매뉴얼에서도 이러한 불일치가 발생할 수 있습니다.

제가 참조할 수 있는 의심할 여지 없이 공식적인 명명 체계가 있습니까?

답변1

에서 적응POSIX 표준의 "유틸리티 매개변수 구문" 섹션:

utility_name [-a] [-b] [-c option_argument]
             [-d|-e] [-f[option_argument]] [operand...]

예제의 유틸리티 이름은 입니다 utility_name.옵션,옵션 매개변수, 그리고피연산자.

문자와 단일 문자 또는 숫자 -(예: a)로 구성된 매개변수를 호출합니다.옵션(또는 역사적으로 말하자면,배너). 일부 옵션은 다음과 같습니다.옵션 매개변수,그림이 보여주듯이 [-c option_argument]. 마지막 옵션과 옵션 인수 뒤에 오는 인수의 이름이 지정됩니다.피연산자.

기준"매개변수"를 다음과 같이 정의합니다.

쉘 명령 언어에서 유틸리티에 전달된 인수는 함수 argv중 하나에 의해 생성된 배열의 단일 문자열 과 동일합니다 exec. 인수는 명령 이름 뒤에 오는 옵션, 옵션 매개변수 또는 피연산자 중 하나입니다.


utility_name명령줄에 나오는 모든 내용은 유틸리티입니다.논쟁이며 모두 다음에 나타납니다.위치 매개변수쉘 스크립트인 경우. "옵션", "옵션 매개변수" 및 "피연산자"라는 용어는 명령줄에서 이러한 매개변수에 대한 보다 구체적인 이름입니다.

"플래그"와 "스위치"는 "옵션"의 일반적인 동의어입니다.

의 경우

utility -a b=c
  • -ab=c매개변수 입니다 .
  • -a옵션입니다만약에유틸리티는 이를 이와 같이 인식합니다(엄밀히 말하면 유틸리티에는 옵션이 ln없으므로 옵션이 아니며 진단 메시지를 트리거함) .-x-xlnln -x
  • b=c옵션 매개변수입니다만약에-a옵션에는 인수가 필요합니다. 그렇지 않으면 피연산자입니다.
  • b그리고 c아니요피연산자 자체가 아닌 옵션, 옵션 인수입니다.

위의 텍스트에서 알 수 있듯이요약유틸리티(유틸리티 설명서에 나와 있음)는 명령줄에 입력된 일반 명령을 해독하는 것보다 쉽습니다. 매뉴얼에서는 어떤 옵션이 옵션 인수를 취하고 어떤 인수가 피연산자인지 명확하게 설명합니다.

IMHO, c"가치"라고 부르는 것은 완벽합니다. 표준화된 것은 아니지만 "라고 하면 오해하는 사람은 거의 없을 것이다.c할당된 값입니다b“.이것은 관련된 유틸리티의 맥락에서 분명합니다.

예를 들어

$ awk -v var="d" '...' data.in

아는 사람은 이것이 "라는 뜻이라고 awk말할 것입니다 .-v var="d"변수 에 awk명령줄에 var값이 할당됩니다.d".

관련 정보