인수 '-v'와 '-x'는 bash를 의미하는 것은 무엇입니까?


17

나는 다음 shebang과 함께 두 개의 쉘 스크립트를 보았습니다.

#!/bin/bash -x -v 

그러나, man bash무엇 이러한 주장을 설명하지 않습니다 -x-v가 속한 경우, 약자 bash전혀.

그렇다면 그것들 -x-v(그리고 다른 가능한 주장들)은 무엇을 의미합니까?

답변:


26

에서 man bash(예, 그것은 큰 사람 페이지입니다, 일반적으로 Google 검색이 빠릅니다) :

-x 각 간단한 명령 (명령, 대소 문자 명령, 선택 명령 또는 명령의 산술)을 확장 한 후 PS4의 확장 된 값을 표시 한 다음 명령과 해당 확장 인수 또는 관련 단어 목록을 표시합니다.

효과적으로 : 스크립트를 실행하면 해당 스크립트에서 수행 된 모든 작업이 표시됩니다. 따라서 모든 if, 루프 및 명령이 실행됩니다. 디버깅에 매우 유용합니다.

-v 쉘 입력 라인을 읽을 때 인쇄하십시오. 스크립트가 실행될 때 파일을 읽을 때 전체 스크립트를 인쇄합니다. 대화식으로 쉘을 사용하면 Enter 키를 누른 후 각 명령이 표시됩니다.

위의 인용문은의 set내장 명령에 대한 설명에서 인용 한 것입니다. man bash또한 옵션이 set인수 (shebang 행)로 전달 될 수 있음을 설명합니다 .

달리 명시되지 않는 한 옵션은 기본적으로 해제되어 있습니다. 사용 + 하기보다는 -이러한 옵션을 원인으로하는 해제 할 수 있습니다. 쉘 호출에 대한 인수로 옵션을 지정할 수도 있습니다. 현재 옵션 세트는에서 찾을 수 있습니다 $-. 잘못된 옵션이 없으면 반환 상태는 항상 true입니다.


좋아, 그것은 bash에 대한 간단한 주장이며, 나는 이러한 주장없이 다른 버전을 가질 수 있습니까?
Alex

bash에 대해 이야기하고 있다면 : 지난 10 년 동안의 모든 bash 릴리스가 이러한 주장을 지원할 것이라고 생각합니다. 맨 페이지에 대해 이야기하고 있다면 : 그것은 거대하고 당신이 찾고있는 것을 알아야하지만, 거기에 있습니다 (적어도 우분투 13.04에). 일반적으로 Google 검색이 더 빠릅니다.
mtak

6
+1 "Google 검색 속도가 빠릅니다." -> /-x몇 번 정도 man(실제로 less) 표시됩니다. /+ 위쪽 화살표를 사용하여 마지막 검색을 반복 할 수 있지만 현재 검색이 화면에서 나오도록하려면 아래로 내려야합니다 ( /정방향 검색, ?역방향).
goldilocks

2
@ TAFKA'goldilocks '당신의 배포판에 달려 있다고 생각합니다. Ubuntu 13.04 bash 매뉴얼 페이지에서 43 번째 히트가 맞습니다. n정방향 검색 및 N역방향 검색 을 사용하여 다음 적중을 더 쉽게 검색 할 수 있습니다.
mtak

사실, 나는 test -x조건식 (세 번째 히트)이 아닌을보고 set -x있었습니다. -x에는 man bash보다 구체적인를 점점 할 수 있도록 아주 나쁜 경우입니다 : 당신이 사용하는 경우 /^\s+-x\b, (= 라인 + 공백 +의 시작 -x은 5 안타의 오른쪽 하나에 도착 + 단어 경계) ... (는) 4를하고 있지만, 사실에 대한 것입니다 x일치 X... 이것은 내가 물어봐야 할 질문으로 이어집니다 . 어쨌든 대부분의 매뉴얼 페이지에서 ^\s+-x\b패턴이 먼저 작동해야 스위치를 사용할 수 있습니다.
goldilocks

2

bash 매뉴얼 페이지 이러한 옵션이 실제로 더 자세히 설명되어 있지만 쉽게 간과된다는 것을 암시합니다.

따라서 문제는 실제로 읽어야합니다. 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에 출력이 나타납니다.

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