在这里,首先感谢鸟哥,因为有了他,linux越来越简单。
在写shell脚本的时候,经常使用if语句进行判断,下面我给大家总结了一些关于判断的参数:
一、文件类型判断:(除特殊说明外,以下所有例子结果均为redhat6.4默认设置,并且结果均为true)
-e 判断文件(目录)是否存在
如:if [ -e /etc/fstab ]; then
echo "yes"
else
echo "no"
fi
大概意思是判断/etc/fstab这个文件是否存在,如果存在返回yes 如果不存在返回no
-f 判断文件是否存在(非目录)
如:if [ -f /etc/fstab ]; then
echo "yes"
else
echo "no"
fi
大概意思是判断/etc/fstab这个文件是否存在,如果存在返回yes 如果不存在或者是目录则返回no
-d 判断目录是否存在(非文件)
如:if [ -d /etc ]; then
echo "yes"
else
echo "no"
fi
大概意思是判断/etc这个目录是否存在,如果存在则返回yes,如果不存或者不是目录则返回no
-b 判断是否是块设备
如:if [ -b /dev/sda]; then
echo "yes"
else
echo "no"
fi
大概意思是判断/dev/sda是否存在且是块设备,如果是则返回yes,如果不是则返回no(注:块设备的基本特征是每个块都能独立于其它块而读写,如:光盘、磁盘、软盘等)
-c 判断是否为字符设备
如:if [ -c /dev/tty ]; then
echo "yes"
else
echo "no"
fi
大概意思是判断/dev/tty是否存在且是字符设备,如果是则返回yes,如果不是则返回no(注:字符设备是指在I/O传输过程中以字符为单位进行传输的设备,如:键盘,打印机等)
-S 判断是否是一个socket文件
-p 判断是否是FIFO文件(先进先出)
二、文件权限判断
-r 判断是否可读
-w 判断是否可写
-x 判断是否可执行
#!/bin/bash
if [ -x /bin/bash ]; then
echo "yes"
else
echo "no"
fi
检查/bin/bash文件用户是否含有执行权限,如果有则返回yes,否则为no(这个权限与运行脚本的用户权限有关)
Shell Test命令参数解析:http://www.linuxdiyf.com/linux/4803.html
Unix中test命令的用法:http://www.linuxdiyf.com/linux/4515.html