System&Write up/Study

Linux 환경 변수 '?'

Jubil 2017. 12. 28. 00:23
반응형

쉘의 환경 변수 '?'를 알아보도록 하겠습니다.



'?'라는 환경 변수는 바로 전 프로그램의 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이 아닌 정수가 되는 것을 확인할 수 있습니다.



이걸 이용한다면, 비교하는 문자열이 뭔지 몰라도 환경 변수 '?'를 이용해서 알아낼 수 있을 것입니다.

반응형