[問題]有關UNIX shell script 程式

看板LinuxDev作者 (jj)時間14年前 (2009/11/28 19:45), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/1
以下是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

11/28 20:10, , 1F
用 sh 跟 csh 是有差多少嗎?
11/28 20:10, 1F

11/28 21:17, , 2F
有些用法不同,尤其trap那邊有點不知要怎麼改耶
11/28 21:17, 2F

11/29 00:14, , 3F
Csh programming considered harmful
11/29 00:14, 3F

11/29 01:08, , 5F
參考看看
11/29 01:08, 5F
文章代碼(AID): #1B4GrDSj (LinuxDev)