为了记录在一个实际的会话期或多个会话期内运行的用户脚本,可以加下面的代码到每个你想追踪记录的脚本里.这会记录下连续的脚本名记录和调用的次数. 1#添加(>>)下面几行到你想追踪记录的脚本末尾处. 2 3whoami>>$SAVE_FILE #记录调用脚本的用户. 4echo$0>>$SAVE_FILE #记录脚本名. 5date>>$SAVE_FILE #记录日期和时间. 6echo>>$SAVE_FILE #空行作为分隔行. 7 8# 当然,SAVE_FILE变量应在~/.bashrc中定义并导出(export) 9#+(变量值类似如~/.scripts-run)The>>操作符可以在文件尾添加内容.如果你想在文件头添加内容,那应该怎么办? 1file=data.txt 2title="***Thisisthetitlelineofdatatextfile***" 3 4echo$title|cat-$file>$file.new 5#"cat-"连接标准输出的内容和$file的内容. 6# 最后的结果就是生成了一个新文件, 7#+文件的头添加了$title的值,后跟$file的内容. 脚本也可以像内嵌到另一个shell脚本的普通命令一样调用,如Tcl或wish脚本,甚至可以是Makefile.它们可以作为外部shell命令用C语言的system()函数调用,例如.,system("script_name");.把内嵌的sed或awk脚本的内容赋值给一个变量可以增加包装脚本(shellwrapper)的可读性.把你最喜欢和最有用的定义和函数放在一些文件中.当需要的使用的时候,在脚本中使用dot(.)或source命令来"包含(include)"这些"库文件"的一个或多个. 1#脚本库 2#------------- 3 4#注: 5#本文件没有"#!"开头. 6#也没有真正做执行动作的代码. 7 8 9#有用的变量定义 10 11ROOT_UID=0 #Root用户的$UID值是0. 12E_NOTROOT=101 #非root用户出错代码. 13MAXRETVAL=255 #函数最大的的返回值(正值). 14SUCCESS=0 15FAILURE=-1 16 17 18 19#函数 20 21Usage() #"Usage:"信息(即帮助信息). 22{ 23 if[-z"$1"] #没有传递参数. 24 then 25 msg=filename 26 else 27 msg=$@ 28 fi 29 30 echo"Usage:`basename$0`"$msg"" 31} 32 33 34Check_if_root() #检查是不是root在运行脚本. 35{ #取自例子"ex39.sh". 36 if["$UID"-ne"$ROOT_UID"] 37 then 38 echo"Mustberoottorunthisscript." 39 exit$E_NOTROOT 40 fi 41} 42 43 44CreateTempfileName() #创建一个"唯一"的临时文件. 45{ #取自例子"ex51.sh". 46 prefix=temp 47 suffix=`evaldate+%s` 48 Tempfilename=$prefix.$suffix 49} 50 51 52isalpha2() #测试字符串是不是都是字母组成的. 53{ #取自例子"isalpha.sh". 54 [$#-eq1]||return$FAILURE 55 56 case$1in 57 *[!a-zA-Z]*|"")return$FAILURE;; 58 *)return$SUCCESS;; 59 esac #Thanks,S.C. 60} 61 62 63abs() #绝对值. 64{ #注意:最大的返回值=255. 65 E_ARGERR=-999999 66 67 if[-z"$1"] #要传递参
上一篇:shell中的安全话题_程序数据_shell
下一篇:脚本优化_程序数据_shell