반응형
쉘의 환경 변수 '?'를 알아보도록 하겠습니다.
'?'라는 환경 변수는 바로 전 프로그램의 return 값을 가지고 있습니다.
보시면 어떤 정수를 return 해주는 함수를 만들었습니다.
그리고 호출할 때마다 '?' 환경 변수의 값이 계속 달라지는 것을 볼 수 있는데요.
('?' 환경 변수의 값을 출력하고 싶으면, echo $? 라고 입력하면 됩니다.)
재미있게도, '?'는 전 프로그램의 return 값을 가진다는 것을 알 수 있습니다.
sh 쉘에서도 마찬가지인 것을 볼 수 있습니다.
그렇다면 간단한 문자열을 비교하는 C 코드를 짜보도록 하겠습니다.
이 code는 문자열을 4byte(+NULL Byte) 입력 받고, strcmp로 "asdf"와 비교한 return 값을 return해 줍니다.
strcmp 함수는 문자열이 같으면 0을 return하고 아니라면 0을 제외한 정수가 return됩니다.
보시면 asdf를 입력했을 때의 return 값이 0이 나오는 걸 확인할 수 있습니다.
하지만 test를 입력했을 때는 return 값이 0이 아닌 정수가 되는 것을 확인할 수 있습니다.
이걸 이용한다면, 비교하는 문자열이 뭔지 몰라도 환경 변수 '?'를 이용해서 알아낼 수 있을 것입니다.
반응형