exit code

정승균·2020년 12월 31일
0

리눅스

목록 보기
23/29
post-thumbnail

1. exit code


exit code설명
0성공
1일반적인 에러
2builtin shell command 에러
126command가 존재하지만 실행 불가
127command 존재 x
128not used on shell
128+Nsignal N 으로 종료된 경우
255범위 밖인 경우

  • test.sh가 다음과 같을 때
#!/bin/bash
sleep 30
echo "exit code(child) : $?"
  • sleep이 정상 종료된 경우
jsg@jsg-ubuntu:~$ ./test.sh
exit code(child) : 0
  • pkill sleep으로 종료된 경우
jsg@jsg-ubuntu:~$ ./test.sh
./test.sh: line 2:  4358 종료됨               sleep 30
exit code(child) : 143

=> 15(143-128)번 SIGNAL로 종료됐음을 알 수 있음


2. wait


  • 백그라운드 프로세스의 종료를 기다림

  • test.sh 가 다음과 같을 시

jsg@jsg-ubuntu:~$ cat test.sh
#!/bin/bash
sleep 30
echo "====================="
echo "exit code(child) : $?"
echo "====================="
jsg@jsg-ubuntu:~$ ./test.sh 50
./test.sh: line 2:  4439 종료됨               sleep 30
=====================
exit code(child) : 0
=====================

=> $?이 echo에 대한 exit code이므로 원하는 값을 얻을 수 없음

  • wait을 활용한 코드
#!/bin/bash
sleep 30 &
echo "====================="
wait $! 2> /dev/null
echo "exit code(child) : $?"
echo "====================="
jsg@jsg-ubuntu:~$ ./test.sh
=====================
exit code(child) : 143
=====================

exit on error


  • -e 옵션을 주면 에러 발생시 그 exit code 종료
jsg@jsg-ubuntu:~$ cat test.sh
#!/bin/bash -e
[ 10 -gt 20 ]
jsg@jsg-ubuntu:~$ ./test.sh
jsg@jsg-ubuntu:~$ echo $?
1

0개의 댓글