"리눅스 bash/sh 디버깅 sh -x"의 두 판 사이의 차이

잔글 (Jmnote 사용자가 리눅스 Bash 디버깅 sh -x 문서를 리눅스 bash 디버깅 sh -x 문서로 옮겼습니다)
잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(사용자 2명의 중간 판 13개는 보이지 않습니다)
1번째 줄: 1번째 줄:
;bash/sh 한줄씩 실행결과 확인
;bash 쉘스크립트 디버깅
;bash 쉘스크립트 디버깅
;bash/sh 디버깅
;bash/sh 스크립트 실행 명령어 추적
;sh -x
;sh -x


==방법==
==방법==
;각 명령어 표시
{{소스헤더|각 명령어 표시}}
<source lang='bash'>
<syntaxhighlight lang='bash'>
sh -x 스크립트파일명.sh
sh -x 스크립트파일명.sh
</source>
</syntaxhighlight>


;명령어+부가정보 표시
{{소스헤더|명령어+부가정보 표시}}
<source lang='bash'>
<syntaxhighlight lang='bash'>
export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
sh -x 스크립트파일명.sh
sh -x 스크립트파일명.sh
</source>
</syntaxhighlight>
:→ 파일명, 행번호, 항수명도 출력됨
:→ 파일명, 행번호, 항수명도 출력됨


==실습 1==
==실습 1: 일반 예시==
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# cat hello.sh  
[root@zetawiki ~]# cat hello.sh  
#!/bin/sh
#!/bin/sh
echo hello
echo hello
echo world
echo world
[root@jmnote ~]# sh -x hello.sh
</syntaxhighlight>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# sh -x hello.sh
+ echo hello
+ echo hello
hello
hello
+ echo world
+ echo world
world
world
</source>
</syntaxhighlight>
 
<syntaxhighlight lang='console'>
==실습 2==
[root@zetawiki ~]# export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
<source lang='dos'>
[root@zetawiki ~]# sh -x hello.sh
[root@jmnote ~]# export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
[root@jmnote ~]# sh -x hello.sh
+hello.sh:2:: echo hello
+hello.sh:2:: echo hello
hello
hello
+hello.sh:3:: echo world
+hello.sh:3:: echo world
world
world
</source>
</syntaxhighlight>


==실습 3==
==실습 2: 함수 예시==
<source lang='dos'>
<syntaxhighlight lang='console'>
[root@jmnote ~]# cat sayhello.sh  
[root@zetawiki ~]# cat sayhello.sh  
#!/bin/sh
#!/bin/sh
sayhello () {
sayhello () {
48번째 줄: 49번째 줄:
}
}
sayhello
sayhello
[root@jmnote ~]# sh -x sayhello.sh  
</syntaxhighlight>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
[root@zetawiki ~]# sh -x sayhello.sh  
+sayhello.sh:6:: sayhello
+sayhello.sh:6:: sayhello
+sayhello.sh:3:sayhello: echo hello
+sayhello.sh:3:sayhello: echo hello
54번째 줄: 58번째 줄:
+sayhello.sh:4:sayhello: echo world
+sayhello.sh:4:sayhello: echo world
world
world
</source>
</syntaxhighlight>


==같이 보기==
==같이 보기==
*[[$PS4]]
* [[리눅스 set -x]]
* [[$PS4]]


[[분류: bash]]
[[분류: bash]]

2020년 11월 2일 (월) 02:40 기준 최신판

bash/sh 한줄씩 실행결과 확인
bash 쉘스크립트 디버깅
bash/sh 스크립트 실행 명령어 추적
sh -x

1 방법[ | ]

각 명령어 표시
sh -x 스크립트파일명.sh
명령어+부가정보 표시
export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
sh -x 스크립트파일명.sh
→ 파일명, 행번호, 항수명도 출력됨

2 실습 1: 일반 예시[ | ]

[root@zetawiki ~]# cat hello.sh 
#!/bin/sh
echo hello
echo world
[root@zetawiki ~]# sh -x hello.sh
+ echo hello
hello
+ echo world
world
[root@zetawiki ~]# export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
[root@zetawiki ~]# sh -x hello.sh
+hello.sh:2:: echo hello
hello
+hello.sh:3:: echo world
world

3 실습 2: 함수 예시[ | ]

[root@zetawiki ~]# cat sayhello.sh 
#!/bin/sh
sayhello () {
	echo hello
	echo world
}
sayhello
[root@zetawiki ~]# export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
[root@zetawiki ~]# sh -x sayhello.sh 
+sayhello.sh:6:: sayhello
+sayhello.sh:3:sayhello: echo hello
hello
+sayhello.sh:4:sayhello: echo world
world

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}