옵션과 피연산자 사이의 순서?

옵션과 피연산자 사이의 순서?

유틸리티를 사용할 때 옵션(및 해당 옵션 인수) 및/또는 피연산자를 지정할 수 있습니다.

대부분의 경우(일부 표준(POSIX?)을 준수한다는 의미에서)

  • 옵션 간의 순서는 중요하지 않나요?
  • 피연산자 간의 순서가 중요합니까? (예를 들어 의 피연산자는 find와 같이 순서가 지정됩니다 grep.)
  • 옵션과 피연산자 사이의 순서가 중요합니까? (예를 들어ls . -l그리고 rm mydir -rPOSIX와 호환되지 않는다고 합니다.)
  • 옵션에 옵션 인수가 있을 수 있는 경우 옵션 뒤에 오는 내용이 옵션의 인수인지 피연산자인지 여부를 프로그램에서 어떻게 알 수 있습니까?

그런데 C(예: getopt) 및 Python(예:인수 구문 분석 중) 옵션과 피연산자가 동일한 기준을 충족합니까?

CFhttp://pubs.opengroup.org/stage7tc1/basedefs/V1_chap12.html

답변1

음,유틸리티 세법 가이드옵션 순서 및 다른 옵션과의 관계에 대한 질문에 답할 수 있습니다.

지침 11:

옵션이 상호 배타적이라고 문서화되지 않고, 그러한 옵션이 이전의 호환되지 않는 옵션을 재정의하는 것으로 문서화되지 않는 한, 서로 다른 옵션의 순서는 중요하지 않습니다. 옵션 인수가 포함된 옵션이 반복되는 경우 옵션 및 옵션 인수 조합은 명령줄에 지정된 순서대로 해석되어야 합니다.

이 제품을 주문하는 유일한 중요한 장소는 다음과 같습니다.문서:

  1. 옵션은 유틸리티 설명이 더 혼란스러워지지 않는 한 일반적으로 알파벳 순서로 나열됩니다. 옵션 섹션에 달리 명시되지 않거나 유틸리티 구문 가이드 11의 예외가 적용되지 않는 한, 나타나는 순서에 따른 옵션 사이에는 암묵적인 관계가 없습니다. 옵션 인수 없이 옵션이 반복되는 경우 달리 지정하지 않는 한 결과는 정의되지 않습니다.

그러나 하나의 인수에는 옵션이 필요하지 않고 다른 명령에는 옵션이 필요한 명령이 있는 경우 옵션이 -있는 인수가 옵션이 필요하지 않은 인수 뒤에 오기 때문에 하나의 기호만 사용하여 그룹화할 수 있습니다.

지침 5:

"-" 구분 기호 뒤에 결합하는 경우 옵션 인수가 없는 하나 이상의 옵션과 옵션 인수가 있는 최대 하나의 옵션이 허용되어야 합니다.

POSIX는 표준이므로 호환 여부와 option_arguments 처리 방법을 결정하는 것은 기술 프로그래머의 몫입니다. 다음을 사용하여 POSIX가 아닌 argparse Python 프로그램을 만들 수 있습니다.다음 코드:

>>> parser = argparse.ArgumentParser(prog='PROG', prefix_chars='-+')
>>> parser.add_argument('+f')
>>> parser.add_argument('++bar')

이렇게 하면 +지침 4가 발생하면 프로그램 매개변수가 POSIX가 아닌 다음으로 시작됩니다.

지침 4:

모든 옵션 앞에는 "-" 구분 기호가 와야 합니다.

순서 지정과 관련하여 .parse_args()함수를 사용하여 인수를 특정 위치에 고정할 위치를 결정하세요. argparse lib의 경우 피연산자가 없습니다. 모든 것은 논쟁입니다. 여기서 피연산자는 -문자가 없는 매개변수일 뿐이며, 생성되는 소프트웨어가 POSIX 호환인지 여부를 결정하는 것도 프로그래머의 몫입니다.

올바른 방식으로 구현되면 argparse 자체가 POSIX를 준수합니다.추천도서:

관련 정보:

관련 정보