이 쉘 명령에서“-”(이중 대시)는 무엇을 의미합니까?


13

이 셸 명령이 있습니다.

kill `cat -- $PIDFILE`

이중은 무엇입니까? 그냥 사용하지 않는 이유

kill `cat $PIDFILE`

답변:


20

--지시 cat명령 행 옵션으로 다음에 오는 것을 분석하려고하지.

예를 들어 변수 $PIDFILE가로 정의 된 경우 두 경우에 어떤 일이 발생할지 생각해보십시오 PIDFILE="--version". 내 컴퓨터에서 다음과 같은 결과를 얻습니다.

$ cat $PIDFILE
cat (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjorn Granlund and Richard M. Stallman.

$ cat -- $PIDFILE
cat: --version: No such file or directory

3
이 동작 (매우 일반적 임)은 cat쉘이 아닌 수신 프로그램 (예 :)에 의해 정의됩니다 .
dmckee --- 전 운영자 고양이

--명령 줄 옵션의 끝 을 의미하는 고유 한 셸 스크립트 작성에 대한 설명서 나 자습서가 있습니까? getopts 및 기타 기술을 사용하는 것을 보았지만 논의하지는 않았습니다 --.
CMCDragonkai

3
@CMCDragonkai getopt(1)맨 페이지를 더 이상 볼 필요는 없습니다 . " '-'매개 변수 뒤에있는 각 매개 변수는 항상 비 옵션 매개 변수로 해석됩니다."
Mikael Auno

1

POSIX.1-2017

POSIXhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02 에서도 지정합니다.

12.2 유틸리티 구문 지침

지침 10 :

첫 번째 - 옵션 인수없는 인수는 옵션의 끝을 나타내는 구분 기호로 인정되어야한다. 다음 인수는 모두 '-'문자로 시작하더라도 피연산자로 취급해야합니다.

참조 : /unix/11376/what-does-double-dash-mean-also-known-as-bare-double-dash

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.