728x90
반응형
$? 의 의미
bash shell에서 가장 최근에 실행한 명령어의 종료 상태(status)를 가진 변수이다.
또는 가장 최근에 실행한 함수의 return값을 가진 변수를 의미한다.
% echo hello
hello
% echo $?
0
# 최근 명령어의 종료 상태가 정상
% true
% echo $?
0
% false
% echo $?
1
주의할 점
$?
는 앞서 언급했듯이 '가장 최근 실행 결과'를 저장하는 변수임을 잊으면 안된다.
다시말해서, 가장 최근 실행 결과 코드가 무엇인지 출력하기 위해 다음과 같은 실수를 저지르면 안된다.
잘못된 사용 예
상황: shell을 통해 script 구동 후 결과에 따라 if문으로 처리하기
python3.9 ./test.py
echo "result code: $?"
if [[ $? -ne 0 ]]; then
echo "error!"
fi
위의 예시가 잘못된 이유는 python 스크립트 실행 결과를 다른 변수에 저장하지 않고 사용했기 때문이다.
즉 $? 변수를 if문에 중복해서 사용하게 되면, 'echo' 실행 결과가 두번째 $?에 저장되므로 항상 0이 될 것이다.
잘못된 사용 예를 바로 고치면 다음과 같다.
python3.9 ./test.py
result_code = $?
echo "result code: $result_code"
if [[ $result_code -ne 0 ]]; then
echo "error!"
fi
Reference
반응형
'[OS]Operating System > [Linux]' 카테고리의 다른 글
[Linux] shell code - [], [[]], (), (()) 차이 (0) | 2023.04.30 |
---|---|
[Linux] shell script - python exit code (0) | 2023.04.30 |
[Linux] IF문 (0) | 2023.04.30 |
[Linux] tmux 사용하기 (0) | 2023.04.16 |
[Linux] 파일 권한 의미 (0) | 2023.04.15 |