답변:
보다 정확하게 말하면 --
bash 내장 명령 및 기타 여러 명령에서 이중 대시 ( )가 사용되어 명령 옵션의 끝을 나타내며 그 후에 위치 매개 변수 만 허용됩니다.
사용 예 : 문자열에 파일을 grep한다고 가정하십시오 -v
-일반적으로 -v
일치하는 의미를 바꾸는 옵션으로 간주되지만 (일치하지 않는 행만 표시) 다음과 같이 --
문자열을 grep 할 수 있습니다 -v
.
grep -- -v file
--
에서 정규식과 옵션을 구분하는 작업을 수행 grep
하지만 표준 방법은 -e
/ 를 사용하는 것 --regexp
입니다.
--
위의 예를 다음과 같이 작성할 수 있음을 알 수는 있지만 정확합니다 grep -e -v file
(매우 혼란 스럽지만).
bash
내장 명령 --
이 옵션 마커의 끝으로 허용 되는 것은 아닙니다 . [
그리고 예를 echo
들어서는 안됩니다 ( 이유 중 하나를 echo
안정적으로 사용할 수 없습니다 ).
에서 man bash
우리가 읽을 수있는 쉘 내장 명령 섹션 :
특별히 언급하지 않는 한, 각각의 내부 명령이 선행 옵션을 수락 등이 섹션의 설명은
-
수락--
옵션의 끝을 나타 내기 위해 .
:
,true
,false
, 및test
내장 매크로 옵션을 허용하지 않으며 치료하지 않는--
특별.exit
,logout
,break
,continue
,let
, 및shift
내장 매크로 수락 및 프로세스 인수로 시작-
하지 않고--
. 인수를 허용하지만 옵션을 수락하도록 지정되지 않은 다른 내장은-
유효하지 않은 옵션으로 시작하는 인수를 해석하며이 해석--
을 방지 해야 합니다.옵션의 끝을 의미 하는
echo
것은 아닙니다--
.
man bash
(다음에 직접 참고 :) .
POSIX.1-2017
12.2 유틸리티 구문 지침
지침 10 :
--
옵션 인수가 아닌 첫 번째 인수는 옵션의 끝을 나타내는 구분 기호로 허용되어야합니다. 다음 인수는 '-
'문자로 시작하더라도 피연산자로 취급되어야합니다 .
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
내장에서 절대적으로 필요한 곳입니다.