-d是否为目录
-e测试目录或文件是否存在
-f是否为文件
-r是否有读取的权限
-w是否有写入的权限
-x是否有执行的权限
-L是否为符合连接文件
-eq等于
-ne不等于
-gt大于
-lt小于
-le小于或者等于
-ge大于或者等于
=匹配
!=不匹配
-z是否为空
!用于取反。
&&:逻辑与,前后都成立整个测试结果才真test中改为-a
||:逻辑或,前后两个条件至少有一个成立,整个测试结果才为真。 test中改为-o
!:逻辑或,指定的表达式不成立时。整个测试命令为真。
————————————————————————————————————————————————
【if的三种语句】
————————————————————————————————————————————————
单分支的if语句列子:检查/var/logmesages文件是否存在,如果存在统计行数并输
if条件测试命令出,不存在就不做任何操作。
thenvimchklog.sh
命令序列#!/bin/bash
logfile=/var/log/mssages"
if [ -f $logfile ]; then
wc -l $logfile
fi
shchklog.sh
—————————————————————————————————————————————————
双分支的语句提示用户指定备份目录的路经,若目录以存在则显示提示信息后跳过,
否则显示相应提示信息后创建该目录。
if条件测试命令vimmkbak.sh
#!/bin/bash
thenraed-p "这是一个目录:“ BakDIr
命令序列1if [ -d $BakDIr ]; then
elseecho "$BakDIraready exist.
命令序列2else
fiecho"$BakDIr notexist ,will make it."
mkdir$BaDIr
fi
—————————————————————————————————————————————————
多分支的if语句统计当前登录到系统中的用户爽数量,并判断是否超过三个,若是则显示
if条件测试命令实际数量并给出警告信息,否则列出登录的用户账号名称及所在终端
thenvimchkuser.sh
命令序列1#!/bin/bash
elif条件测试命令2use=`who | wc -l`
thenif [ $use -gt3 ]; then
命令序列2echo "Alert, to many login uses ( otal: $use.)"
elseelse
命令序列3echo "login users:"
fiwho| awk '{print $1,$2}'
fi
__________________________________________________________________________________________________
检查portmap进程是否应经存在,若存在就输出”portmap service isrunnng。“;否则检查是否存在”/tc/rc.d/int.d/porting"可执行脚本,存在则启动portmamp服务,否则提示“noportmap scipt file”
#/bin/bash
pgrep portmap&>/dev/null
if [ $? -eq 0 ]; then
echo "potmap service is runnig."
elif [ -x "/etc/rc.d/init.d/portmap" ];then
service portmap start
else
echo "no portmap script file."
fi
sh chkportmap.sh
———————————————————————————————————————————————