[bash: $?] 오류 발생 여부 확인 리눅스 bash script

스크립트 내부에서 실행하는 명령어가 제대로 실행이 되었는지 아니면 오류가 발생했는지에 따라 이후 대응하는 방식을 결정하려면, 일단 명령의 종료 상태(exit status)를 알아야 한다. 종료 상태는 $? 변수에 저장된다. 이 변수의 값이 0이면 실행을 정상적으로 마치고 종료한 것이고, 0이 아니면 오류가 발생한 것이다. 아래의 예시를 보자.

echo "abcd"

abcd
echo $?
0

문자열 abcd를 출력하라는 명령이 정상적으로 실행되고 종료되었으므로 종료 상태, 즉 $? 변수의 값은 0이 된다. echo 명령으로 값을 출력해서 확인할 수 있다.

만약 이미 존재하는 디렉토리를 다시 만들려고 한다면 오류가 발생할 것이다. 이 경우에는 $? 변수의 값이 0이 아니다.

mkdir ~/Documents
mkdir: cannot create directory
echo $?
1

$? 변수를 if 조건문에 활용하면 바로 앞의 명령에서 오류 발생 여부에 따라 이후에 실행할 명령을 다르게 정할 수 있다. 아래의 예시를 보면 금방 감이 잡힐 것이다.

mkdir $my_dir
if [[ "$?" -eq 0 ]]
  then echo "mkdir 명령이 정상적으로 실행되었습니다."
  else echo "mkdir 명령 실행중에 오류가 발생했습니다."
fi




덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

39703
2864
1813372

ad_widget_2