C shell script를 사용할 때
각 명령어의 결과에 따라 다음 statement를 결정해야하는 경우가 있다.
이는 special variable $status를 사용하여 해결이 가능하다.
그려면 $status를 어떻게 사용할 수 있는지를 아래의 예를 통해 알아보도록 하자

예를 들어
diff를 사용해서 f1파일과 f2파일이 같으면 "같다"고 출력해주고
서로 다르면 "다르다"고 출력해야 한다고 하자.

이러한 경우
diff f1 f2
명령어를 사용하여 두 파일이 같은지 다른지는 알 수 있지만
그 뒤에 같으면 같다고 표시해주고, 다르면 다르다고 표시해주는 것은
diff 명령어의 결과에 따라 어떤 문장을 출력해야한 표시해 주여야 하는 사항이다.

이럴 때
$status variable을 사용하면 쉽게 해결이 가능하다.
$status는 special variable로 바로 전 statement의 결과를 저장한다.

diff의 경우 비교한 두 파일이 서로 같으면 $status를 0으로 세팅하고
다르다면 $status를 1로 세팅하게 되는데
(각 명령어가 어떠한 상황일 때 $status를 어떻게 바꾸는지는 각자 찾아봐야 한다)
이를 이용하여 위 예의 shell script를 작성하면 다음과 같다.

#!/bin/csh -f
diff f1 f2
if ($status==0) then
    echo "같다"
else
    echo "다르다"
endif

'Linux' 카테고리의 다른 글

[vi] Folding  (0) 2011.02.08
[Perl] File I/O  (0) 2011.01.05
[Tcl/Tk] Tcl/Tk 문법  (0) 2010.10.20
[awk] awk 사용법#5 - Functions  (0) 2010.05.17
[awk] awk 사용법#4 - Array  (0) 2010.05.14
Posted by sunshowers
,