다음 shebang이 포함된 여러 쉘 스크립트를 보았습니다.
#!/bin/bash -x -v
그러나 이러한 인수 와 가 무엇을 의미하는지 man bash
에 대한 설명은 전혀 없습니다 .-x
-v
bash
그렇다면 이러한 -x
합계 -v
(및 기타 가능한 주장)는 무엇을 의미합니까?
답변1
( 예 man bash
, 큰 매뉴얼 페이지이므로 일반적으로 Google에서 검색하는 것이 더 빠릅니다):
-x
각각의 단순 명령, 명령의 경우, 케이스 명령, 선택 명령 또는 명령의 산술이 확장된 후 PS4의 확장된 값이 표시되고 그 뒤에 명령 및 확장된 인수 또는 관련 단어 목록이 표시됩니다.
유효함: 스크립트를 실행하면 스크립트 내에서 완료된 모든 작업이 표시됩니다. 따라서 모든 ifs, 루프 및 명령이 실행됩니다. 디버깅에 매우 유용합니다.
-v
읽은 대로 쉘 입력 행을 인쇄하십시오. 스크립트를 실행하면 파일을 읽는 동안 전체 스크립트가 인쇄됩니다. 셸을 대화형으로 사용하는 경우 Enter 키를 누르면 각 명령이 표시됩니다.
위의 인용문은 set
내장 명령에 대한 설명 에서 나온 것입니다 man bash
. 또한 옵션을 set
인수로 전달할 수도 있음을 설명합니다(shebang 줄에서).
별도로 명시하지 않는 한 이러한 옵션은 기본적으로 꺼져 있습니다.
+
대신 사용하면-
이러한 옵션이 꺼집니다. 옵션은 쉘 호출에 대한 인수로 지정될 수도 있습니다. 현재 옵션 세트는 에서 찾을 수 있습니다$-
. 잘못된 옵션이 발생하지 않는 한 반환 상태는 항상 true입니다.
답변2
배쉬 매뉴얼 페이지하다이러한 옵션은 실제로 아래에 자세히 설명되어 있지만 간과되기 쉽습니다.
따라서 귀하의 질문은 실제로 다음과 같습니다. bash 매뉴얼 페이지의 OPTIONS 섹션이 불완전합니다. 대답은 복사하거나 옵션 섹션의 첫 번째 부분을 강조 표시하는 것입니다.
OPTIONS
All of the single-character shell options documented in the descrip‐
tion of the set builtin command can be used as options when the shell
is invoked. [ ... ]
마지막으로 작업을 완료하기 위해 다음 상황에서 스크립트 코드를 표시하는 POSIX 셸의 표준 옵션입니다.읽다( -v
) 언제달리기( -x
). 출력은 stderr에 나타납니다.