Bash: 원본 스크립트가 "-x"로 실행되었는지 테스트합니다.

Bash: 원본 스크립트가 "-x"로 실행되었는지 테스트합니다.

Bash 스크립트가 실행되는지 테스트할 수 있습니까 -x?

일부 원격 스크립트도 실행하는 스크립트를 작성 중인데 다음을 수행할 수 있기를 원합니다.

USE_X="$( run_with_x && "-x" || "" )"
ssh $host "bash $USE_X some_script.sh"

답변1

$-변수 만 보세요 .

USE_X=`case "$-" in *x*) echo "-x" ;; esac`

(예, grep을 호출하지 않고 이 작업을 수행했습니다. pid를 저장하세요!)

답변2

이 표현식은 스크립트가 ""(비어 있음) 로 실행되면 -xtrue이고 그렇지 않으면 표현식은 "-x"입니다.[[ $- =~ x ]]-x$([[ $- =~ x ]] && echo "-x")

답변3

아마도 가장 간단한 구문 분석 방법 $-일 것입니다.다그 브라운 방식(또한 순수 bash), 그러나 case역따옴표를 사용하지 않음(하위 쉘):

if  [[ ${-/x} != $- ]] ; then USE_X="-x"; fi

더 짧게:

[[ ${-/x} != $- ]] && USE_X="-x"

이는[[아니요test의 경우와 같이 내장 기능을 호출 [하지만 bash 구문 구성( man bash이 개발자는 추천합니다). 그래서 저는 그것이 "더 순수한 레이브"라고 주장합니다. ;)

답변4

Bash 매뉴얼 페이지 문서는 set -o xtracethis 와 동일 set -x하며 이는 -x쉘에 대한 인수인 것과 동일합니다. (지금까지는 -o option"시스템이 사용자 이식성 유틸리티 옵션을 지원하는 경우"라는 주의 사항과 함께 SUSv3 sh와 호환됩니다.)

또한 옵션이 없으면 모든 옵션의 현재 상태가 set -o인쇄됩니다 . -o(SUSv3도 이를 지정하지만 소용이 없습니다. 형식이 지정되지 않았으므로 실행 중인 셸이 bash와 유사한 형식을 사용한다는 것을 아는 경우에만 이를 사용할 수 있습니다.)

따라서 파이프가 set -o | grep xtrace | grep -q on당신이 찾고 있는 것이어야 합니다.

관련 정보