programing

bash 스크립트를 한 줄씩 어떻게 실행합니까?

subpage 2023. 4. 29. 09:19
반응형

bash 스크립트를 한 줄씩 어떻게 실행합니까?

bash -x 옵션을 입력하면 모든 라인이 표시됩니다.그러나 스크립트는 정상적으로 실행됩니다.

어떻게 하면 한 줄씩 실행할 수 있습니까?제대로 작동하는지 확인할 수도 있고 중단하고 버그를 수정할 수도 있습니다.동일한 효과를 가합니다.read각 행에

모든 줄에 읽기를 넣을 필요는 없으며, 다음과 같은 트랩을 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 >

스크립트를 중지하려면 이 경우 다른 셸에서 스크립트를 제거해야 합니다.


대안1

스크립트에서 다음 명령으로 진행하기 전에 몇 초만 기다리려면 다음 예제를 사용할 수 있습니다.

#!/usr/bin/env bash
trap "set +x; sleep 5; set -x" DEBUG

< YOUR CODE HERE >

출력을 더 읽기 쉽게 하기 위해 트랩 명령어에 set +x와 set -x를 추가하고 있습니다.

BASH 디버거 프로젝트는 "gdb 명령 구문을 따르는 bash용 소스 코드 디버거"입니다.

bash 스크립트가 실제로 하나씩 실행하려는 여러 개의 off 명령이라면 변수를 증가시킬 때 각 명령을 하나씩 실행하는 다음과 같은 작업을 수행할 수 있습니다.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

bash-steping-extrax를 보세요.

스텝 추가 트레이스가 가능합니다.

xargs: 줄을 필터링할 수 있습니다.

cat .bashrc | xargs -0 -l -d \\n bash
  • -0 원시 입력으로 처리(탈출 금지)
  • -l 각 라인 구분(공연의 경우 기본값 아님)
  • -d \\n 줄 구분 기호

언급URL : https://stackoverflow.com/questions/9080431/how-execute-bash-script-line-by-line

반응형