bash -x 옵션을 입력하면 모든 행이 표시됩니다. 그러나 스크립트는 normaly를 실행합니다.어떻게 bash 스크립트를 한 줄씩 실행합니까?
줄 단위로 어떻게 실행할 수 있습니까? 내가 올바른 일을하는지, 아니면 버그를 중단하고 고칠 수 있는지 알 수 있습니다. 동일한 효과가 모든 행에 read
으로 표시됩니다.
bash -x 옵션을 입력하면 모든 행이 표시됩니다. 그러나 스크립트는 normaly를 실행합니다.어떻게 bash 스크립트를 한 줄씩 실행합니까?
줄 단위로 어떻게 실행할 수 있습니까? 내가 올바른 일을하는지, 아니면 버그를 중단하고 고칠 수 있는지 알 수 있습니다. 동일한 효과가 모든 행에 read
으로 표시됩니다.
everyline에서 읽을 필요가 없습니다. 다음과 같은 트랩을 bash 스크립트에 추가하면 원하는 효과가 나타납니다.
#!/usr/bin/env bash
set -x
trap read debug
< YOUR CODE HERE >
작동, 그냥 bash v4.2.8 및 v3.2.25로 테스트했습니다.
개선 된 버전
스크립트 파일의 내용을 읽는 경우, 위에 나열된 작동하지 않습니다. 해결 방법은 다음 예제와 같습니다.
#!/usr/bin/env bash
echo "Press CTRL+C to proceed."
trap "pkill -f 'sleep 1h'" INT
trap "set +x ; sleep 1h ; set -x" DEBUG
< YOUR CODE HERE >
는
해야 할 것입니다 스크립트가이 경우 다른 쉘에서 죽일 중지하십시오.
당신은 단순히 당신을 위해 일할 수있는 스크립트의 다음 명령에 다음 예제를 진행하기 전에 몇 초를 기다려야합니다 ALTERNATIVE1.
#!/usr/bin/env bash
trap "set +x; sleep 5; set -x" DEBUG
< YOUR CODE HERE >
출력을 읽기 쉽게하려면 trap 명령에 set + x와 set -x를 추가합니다.
그러면 어떻게 다음 단계로 넘어갈 수 있습니까 (다음 명령 실행)? –
모든 명령에서 읽기를 트랩합니다.당신이해야 할 일은 return을 눌러 다음 명령을 얻는 것입니다. –
다른 쉘을 사용하고 싶다면 ksh와 함께 작업하십시오. – ChrisGer
아마도 BASH Debugger이 적합 할 수 있습니다.
bash-stepping-xtrace을 살펴보십시오.
xtrace를 스테핑 할 수 있습니다.
bash 스크립트가 실제로 하나씩 실행하려는 명령에서 한 묶음이라면 다음과 같이 할 수 있습니다.이 명령은 행에 해당하는 변수 LN
을 증가시킬 때 각 명령을 하나씩 실행합니다 번호를 입력하십시오. 이렇게하면 마지막 명령을 매우 쉽게 다시 실행할 수 있으며 변수를 증가시켜 다음 명령으로 이동합니다.
명령이 "it.sh"파일에 있다고 가정하고 다음을 차례로 실행하십시오.
$ cat it.sh
echo "hi there"
date
ls -la /etc/passwd
$ $(LN=1 && cat it.sh | head -n$LN | tail -n1)
"hi there"
$ $(LN=2 && cat it.sh | head -n$LN | tail -n1)
Wed Feb 28 10:58:52 AST 2018
$ $(LN=3 && cat it.sh | head -n$LN | tail -n1)
-rw-r--r-- 1 root wheel 6774 Oct 2 21:29 /etc/passwd
아마도 더 넓게 이건 정말 최고의 솔루션입니다 또한 https://stackoverflow.com/questions/951336/how-to-debug-a-bash-script/45096876#45096876 – tripleee