리눅스 set -o pipefail

1 개요[ | ]

set -o pipefail
  • 파이프 사용시, 이전 단계의 오류(non-zero exit code)를 승계하도록 하는 설정
  • 파이프 사용시 오류 코드(non-zero exit code)를 이어받는다.
  • set -e와 함께 사용하는 경우가 많다.

2 실습[ | ]

user01@localhost:~$ cat test1.sh 
cat /non/exsitent/file | wc
echo $?
user01@localhost:~$ sh test1.sh 
cat: /non/exsitent/file: No such file or directory
      0       0       0
0
user01@localhost:~$ echo $?
0
→ cat 명령어가 없는 파일에 접근하여 오류 발생
→ wc는 비어있는 표준입력을 받고 정상수행(표준출력 0 0 0)되어 EXIT CODE 0
→ 스크립트 자체는 정상 수행되었으므로 EXIT CODE 0
user01@localhost:~$ cat test2.sh 
set -o pipefail
cat /non/exsitent/file | wc
echo $?
user01@localhost:~$ sh test2.sh 
cat: /non/exsitent/file: No such file or directory
      0       0       0
1
user01@localhost:~$ echo $?
0
→ cat 명령어가 없는 파일에 접근하여 오류 발생
→ wc는 비어있는 표준입력을 받고 정상수행(표준출력 0 0 0)되었으나, 파이프를 통해 전달받은 EXIT CODE 1을 승계함
→ 스크립트 자체는 정상 수행되었으므로 EXIT CODE 0

3 같이 보기[ | ]

4 참고[ | ]

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