본문 바로가기
Etc

Windows/Linux Command line run Exit code

by 올엠 2021. 4. 1.
반응형

Command Line 프로그램을 제작하다보면, 실행 결과가 정상적으로 처리되었는지 확인하여 처리해야 하는 경우가 있다.

이때 유용한 Exit Status에 대해서 배워보도록 하겠다.

 

윈도우와 리눅스는 모두 콘솔에서 실행을 완료후 종료 코드를 내보내도록 구성되어 있다.

그리고 실행 종료 코드를 특정 변수에 저장한다. 

Windows의 경우 echo %errorlevel%, 리눅스의 경우 echo $? 에 마지막 실행 코드를 보관 한다.

 

Exit Status가 0인 경우 정상적으로 실행이 완료된 상태를 의미한다.

만약 0 이외의 코드가 있다면 프로그램 실행중 오류가 발생했다는 의미이다.

 

프로그램 실행 유무 확인

그럼 간단이 윈도우에서 Exit Status를 확인해 보겠다.

hostname 명령이 실행되었는지와 잘못된 명령을 내렸는지도 확인된다.

C:\Users\singl>hostname
DESKTOP-K2VS8LK

C:\Users\singl>%errorlevel%
'0' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\singl>hostnam
'hostnam' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\singl>%errorlevel%
'9009' is not recognized as an internal or external command,
operable program or batch file.

실행 결과에 대한 결과 확인

만약 프로그램 실행은 되었지만, 처리 결과가 비 정상 실행인 경우에도 구분이 가능하다.

C:\Users\singl>hostname //233123
sethostname: Use the Network Control Panel Applet to set hostname.
hostname -s is not supported.

C:\Users\singl>%errorlevel%
'1' is not recognized as an internal or external command,
operable program or batch file.

만약 curl 같은 프로그램을 통해 정상적으로 파일을 다운로드 하였는지도 확인이 가능하다.

C:\Users\singl>curl -O http://naver.com
curl: Remote file name has no length!
curl: try 'curl --help' for more information

C:\Users\singl>%errorlevel%
'23' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\singl>curl -O http://naver.com/index.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   162    0   162    0     0    162      0 --:--:-- --:--:-- --:--:--   692

C:\Users\singl>%errorlevel%
'0' is not recognized as an internal or external command,
operable program or batch file.

만약 Python이나 C# 을 통해 콘솔 자동화를 구성한다면 본 에러코드 리턴을 통해 실행 유무를 확인하여 분기를 구현할 수 있을 것이다.

반응형