两个参数对比 [[email protected] shell]# vi test.sh [[email protected] shell]# cat test.sh #!/bin/bashif [ $1 -ge $2 ]; then echo -e "\033[41;37m <参数不对,第一个数字要小于第二个,退出此次操作!> \033[0m" else echo "起止时间依次是:`date -d "$2 days ago" +%Y%m%d`--`date -d "$1 days ago" +%Y%m%d`";fi[[email protected] shell]# ./test.sh 1 2起止时间依次是:20141116--20141117[[email protected] shell]# ./test.sh 2 1 <参数不对,第一个数字要小于第二个,退出此次操作!> [[email protected] shell]# ./test.sh 2 8起止时间依次是:20141110--20141116[[email protected] shell]# ./test.sh 1 90起止时间依次是:20140820--20141117[[email protected] shell]# ./test.sh 1 100起止时间依次是:20140810--20141117[[email protected] shell]# ./test.sh 1 1 <参数不对,第一个数字要小于第二个,退出此次操作!> [[email protected] shell]# cleanup.sh#!/bin/bashLOG_DIR=/var/log ROOT_UID=0 # 只有用户ID变量$UID值为0的用户才有root权限. LINES=50 # 默认的行数 E_XCD=66 # 不能进入到目录时的退出代码值 E_NOTROOT=67 # 不是root用户时退出的代码值 # 必须以root用户运行,以下进行检测 if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script." exit $E_NOTROOT fi if [ -n "$1" ] # 测试是否提供了命令行参数(即是测试命令行参数至少有一个参数) then lines=$1 else lines=$LINES # Default, if not specified on command line. fi # Stephane Chazelas建议, #+ 下面是一种更好的检测命令行参数的方法, #+ 但是对于现在来说还是有些高级。 # # E_WRONGARGS=65 # 不是数字参数 (参数格式不对)时的退出码 # # case "$1" in # "" ) lines=50;; # *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;; # * ) lines=$1;; # esac # #* 可以跳到"循环"那章阅读开头一部分去了解上面的代码意思. cd $LOG_DIR if [ `pwd` != "$LOG_DIR" ] # 也可以用 if [ "$PWD" != "$LOG_DIR" ] # 如果工作目录不在/var/log里? then echo "Can‘t change to $LOG_DIR." exit $E_XCD fi #在操作清空日志文件之前再次检查是否在正确的目录里 # 可以像下面再次确定是否在正确的目录里: # # cd /var/log || { # echo "Cannot change to necessary directory." >&2 # exit $E_XCD; # } tail -$lines messages > mesg.temp # 保存message日志文件最后面几行日志信息到临时文件. mv mesg.temp messages # 然后用临时文件覆盖messages日志文件 # cat /dev/null > messages #* 上面这句把messages日志文件全部清空,这样没有上面那样保留最后几行安全 cat /dev/null > wtmp # ‘: > wtmp‘ and ‘> wtmp‘ have the same effect. echo "Logs cleaned up." exit 0
时间: 2024-10-24 23:38:13