作者dar5103 (jj)
看板LinuxDev
標題[問題]有關UNIX shell script 程式
時間Sat Nov 28 19:45:15 2009
以下是UNIX shell script的程式(用bourne shell寫的),現在我想把它
轉成c shell script ,要怎麼轉換呢?
P.S 這是一個可追蹤使用者登入登出的shell script
#! /bin/sh
pause=20
loopCount=10000
error=0
for arg in $*
do
case $arg in
-t*)
pause=`awk 'END { print substr(val,3,3) }' val=$arg < /
dev/null`
#echo $pause
;;
-n*)
lineCount=`awk 'END { print substr(val,3,3) }' val=$arg
/dev/null`
#echo $lineCount
;;
*)
user=$arg
#echo $user
;;
esac
done
if [ ! "$user" ]
then
error=1
fi
if [ $error -eq 1 ]
then
cat << ENDOFERROR
usage: track [-n#] [-t#] userId
ENDOFERROR
exit
fi
trap './track.cleanup $$; exit 1' 2
#trap 'exitCode=1; exit' 2 3
> .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.$$
# cat .track.new.$$
# cat .track.old.$$
if [ -s .track.report.$$ ]
then
echo track report for ${user}:
cat .track.report.$$
fi
mv .track.new.$$ .track.old.$$
# echo $$
# echo $pause
# echo $count
# sleep $pause
count=`expr $count + 1`
done
exitCode=0
程式裡有用到另外兩個程式
track.sed
/^[0-9].*/d
/^---/d
s/^</login/
s/^>/logout/
和
track.cleanup
echo stop tracking
rm -f ./.track.old.$1 ./.track.new.$1 ./.track.report.$1
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.131.25
1F:→ xam:用 sh 跟 csh 是有差多少嗎? 11/28 20:10
2F:→ dar5103:有些用法不同,尤其trap那邊有點不知要怎麼改耶 11/28 21:17
3F:推 dozer:Csh programming considered harmful 11/29 00:14
5F:推 dozer:參考看看 11/29 01:08