<html> <pre> Unix 책에 있는건데요.. 주석은 안넣었습니다... 틀린곳이 3부분이 있다고 합니다...그리고 각줄에대한 설명을좀 부탁드립니다.... #!/bin/sh pause=20 loopCount=10000 error=0 for arg in $* do case $arg in -t*) pause=`expr substr $arg 3 10` ;; -n*) loopCount=`expr substr $arg 3 10` ;; *) user=$arg ;; esac done if [ ! "$user" ] then error fi if [ $error -eq 1 ] then cat << ENDOFERROR usage: track [-n#] [-t#] userId ENDOFERROR exit 1 fi trap 'track.cleanip $$; exit $exitCode' 0 trap 'exitCode=1; exit' 2 3 echo -n > .track.old.$$ count=0 while [ $count -lt $loopCount ] do who | grep $user | sort > .track.new.$$ diff .track.new.$$ .track.old.$$ | sed -f track.sed > .track.report.$$ if [ -s .track.report.$$ ] then echo track report for ${user}: cat .track.report.$$ fi mv .track.new.$$.track.old.$$ sleep $pause count=`expr $count + 1` done exitCode=0 </pre> </html>
예전 책의 셸 스크립트 예제에는 틀린 부분이 있을 수 있으니 각 줄의 역할을 하나씩 짚어 보세요. expr substr 은 문자열을 자르는 명령이고 trap 은 신호를 잡는 명령입니다. 인용 부호가 빠진 곳과 종료 처리를 먼저 확인하고, 실제로 실행해 오류 메시지를 보면 빠릅니다.