If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
两个参数对比
![](http://blog.itpub.net/attachment/201411/20/29734436_1416455576GIZu.png)
[root@CentOS6 shell]# vi test.sh
[root@CentOS6 shell]# cat test.sh
#!/bin/bash
if [ $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
[root@CentOS6 shell]# ./test.sh 1 2
起止时间依次是:20141116--20141117
[root@CentOS6 shell]# ./test.sh 2 1
<参数不对,第一个数字要小于第二个,退出此次操作!>
[root@CentOS6 shell]# ./test.sh 2 8
起止时间依次是:20141110--20141116
[root@CentOS6 shell]# ./test.sh 1 90
起止时间依次是:20140820--20141117
[root@CentOS6 shell]# ./test.sh 1 100
起止时间依次是:20140810--20141117
[root@CentOS6 shell]# ./test.sh 1 1
<参数不对,第一个数字要小于第二个,退出此次操作!>
[root@CentOS6 shell]#
cleanup.sh
#!/bin/bash
LOG_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