나는 sh가 기본 쉘을 호출한다는 것을 알고 있으므로 "bash -"는 같은 의미입니다. 하지만 누군가 나에게 구문을 설명해 줄 수 있나요? bash 매뉴얼을 찾아보았지만 찾을 수 없었습니다. 명령의 출력을 실행하고 싶었기 때문에 이 문제가 발생했습니다. 전임자.
echo date | sh -
날짜를 인쇄하세요.
답변1
예, 같은 의미입니다 sh -
.bash -
man bash에는 다음과 같은 설명이 있습니다.
--
A -- 옵션의 끝을 나타내며 추가 옵션 처리를 비활성화합니다. -- 이후의 모든 인수는 파일 이름 및 인수로 처리됩니다. -에 대한 인수는 -와 동일합니다.
이는 단순히 옵션의 끝을 나타내며 이후의 모든 토큰은 대시로 시작하더라도 매개변수(옵션 아님)임을 의미합니다 -
.
아직 하나 있어요POSIX sh에도 비슷한 설명이 있습니다..
따라서 이번 POSIX.1-2017 볼륨에서는 기존 방식이 매우 일반적인 것으로 간주되므로 일반 "--" 인수 외에 옵션 끝에 단일 태그를 사용할 수 있습니다.
이 명령은 다음과 같습니다.
$ echo "date" | sh -
Mon Feb 12 00:00:00 UTC 2018
하지만 다음도 수행하세요.
$ echo "date" | sh
Mon Feb 12 00:00:00 UTC 2018
이
$ echo "date" | sh -s
Mon Feb 12 00:00:00 UTC 2018
이렇게 하면 무엇이 실행되고 있는지 명확해집니다.
$ echo "date" | sh -x
+ date
Mon Feb 12 00:00:00 UTC 2018
그러나 이것은 실패합니다.
$ echo "date" | sh - -x
sh: 0: Can't open -x
이는 날짜 문자열이 표준 입력에서 명령으로 읽혀지고 대시(-)가 옵션의 끝과 인수의 시작(-와 동일)을 나타냄을 의미합니다.