기존의 유용한 답변을 보완합니다. 별도의 답변을 게시하도록 장려 한 QZ 지원에 대한 팁
여기에는 두 가지 메커니즘 이 사용됩니다.
(a) 유틸리티에 대한 POSIX 가이드 라인 (강조 광산) 에서 인용 한 답변
표준 유틸리티의 개요가 필수 옵션 인수 [...]가 있는 옵션을 표시하면 적합한 응용 프로그램 은 해당 옵션과 옵션 인수에 대해 별도의 인수를 사용해야 합니다 . 그러나 , 순응 구현하여야한다 또한 문자를 간섭하지 않고 동일한 인수 문자열의 옵션 및 옵션 인수를 지정하는 응용 프로그램을 허용 .
즉이 경우, 때문에 -d
의 옵션 인수는 필수 , 당신은 할 수 선택 구분 기호를로 지정할지 여부를 :
- 그것 : 별도의 주장
- (d) OR :에 직접 첨부 된
-d
값 으로 .
(s) 또는 (d)를 선택하면 쉘 의 문자열 리터럴 파싱-(b)가 중요합니다.
동등성은 쉘 의 문자열 리터럴 처리에 의해 설명됩니다 .
위의cut
모든 솔루션 은 시간 에 따라 정확히 동일한 문자열 (각 그룹에서)을 나타 냅니다 .
(들) : cut
보고 -d
그것으로, 자신의 a로 다음 인수, 별도의 공간 문자가 들어 인수 - 따옴표 또는없이 \
접두사를!
(D) : cut
볼 -d
을 더한 따옴표 또는없이 - 공백 문자 \
접두사! - 같은 주장의 일부로 .
쉘이 문자열 리터럴을 구문 분석 하는 방법 에 따라 각 그룹의 양식이 궁극적으로 동일한 이유는 두 가지입니다 .
- 쉘은 지정 될 문자 수 와 같이 통하여 라는 메커니즘을 인용 걸릴 수 있습니다, 여러 가지 형태를 :
- 작은 따옴표로 묶인 문자열 : 내부의 내용
'...'
은 문자 그대로 받아 단일 인수를 형성합니다.
- 큰 따옴표로 묶인 문자열 : 내부의 내용
"..."
도 단일 인수를 구성하지만 보간에 영향을받습니다 ( $var
, 명령 대체 ( $(...)
또는 `...`
) 또는 산술 확장 ( $(( ... ))
) 과 같은 변수 참조 확장 ).
\
- 개별 문자 인용 : \
단일 문자 앞의 문자는 해당 문자를 리터럴로 해석합니다.
- 인용에 의해 보완 인용 제거 , 쉘 명령 줄을 구문 분석되면, 그 수단 제거 인수에서 인용 부호를 (둘러싸
'...'
거나 "..."
또는 \
인스턴스) - 따라서, 명령 존재는 결코이 인용 문자를 볼 수 없습니다 호출 .