Programing

실행하기 전에 각 명령을 어떻게 인쇄 할 수 있습니까?

lottogame 2020. 5. 6. 20:50
반응형

실행하기 전에 각 명령을 어떻게 인쇄 할 수 있습니까? [복제]


이 질문에는 이미 답변이 있습니다.

각 명령을 실행하기 전에 인쇄하는 Bash 스크립트를 설정하는 가장 좋은 방법은 무엇입니까?

디버깅 목적으로 유용합니다.

나는 이미 이것을 시도했다 :

CMD="./my-command --params >stdout.txt 2>stderr.txt"
echo $CMD
`$CMD`

이것을 먼저 인쇄해야합니다.

./my-command --params >stdout.txt 2>stderr.txt

그런 다음 ./my-command --params출력을 지정된 파일로 리디렉션하여 를 실행 하십시오.


set -o xtrace

또는

bash -x myscript.sh

이것은 IIRC뿐만 아니라 표준 / bin / sh에서도 작동합니다 (POSIX 일 수 있습니다)

그리고 bashdb ( bash Shell Debugger, release 4.0-0.4) 있다는 것을 기억하십시오


정상으로 되돌리려면 서브 쉘을 종료하거나

set +o xtrace

가장 쉬운 방법 bash은 다음과 같습니다.

set -x

또는로 명시 적으로 실행하십시오 bash -x myscript.


set -x 괜찮지 만 다음과 같은 일을하면 :

set -x;
command;
set +x;

인쇄 될 것입니다

+ command
+ set +x;

서브 쉘을 사용하여 다음과 같은 것을 방지 할 수 있습니다.

(set -x; command)

명령을 인쇄합니다.


set -x 괜찮습니다.

실행 된 각 명령을 인쇄하는 다른 방법은을 사용 trap하는 것 DEBUG입니다. 이 줄을 스크립트의 시작 부분에 넣으십시오.

trap 'echo "# $BASH_COMMAND"' DEBUG

여기 에서 다른 많은 trap사용법을 찾을 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/5750450/how-can-i-print-each-command-before-executing

반응형