if, for, while几乎是所有编程语言的关键字,在Shell编程中也不例外,其中if是使用频率最高的,由于Shell编程中不存在对象(Object)的概念,因此在if的比较判断中主要是对字符串、数字的值进行比较判断的:
一. if的基本语法
- if与[之间要有空格
- []与判断条件之间也必须有空格
- ]与;之间不能有空格
二. 对字符串的判断
- if [ str1=str2 ];then fi #当两个字符串相同时返回真
- if [ str1!=str2 ];then fi #当两个字符串不相等时返回真
- if [ -n str1 ];then fi #当字符串的长度大于0时返回真 (判断变量是否有值)
- if [ -z str1 ];then fi #当字符串的长度为0时返回真
三. 对数字的判断
- int1 -eq int2 #int1和int2相等
- int1 -ne int2 #int1不相等int2
- int1 -gt int2 #int1大于int2
- int1 -ge int2 #int1大于等于int2
- int1 -lt int2 #int1小于int2
- int1 -le int2 #int1小于等于int2
四. 对文件属性的判断
- -r file #用户可读为真
- -w file #用户可写为真
- -x file #用户可执行为真
- -f file #文件存在且为正规文件为真
- -d file #如果是存在目录为真
- -c file #文件存在且为字符设备文件
- -b file #文件存在且为块设备文件
- -s file #文件大小为非0为真,可以判断文件是否为空
- -e file #如果文件存在为真
五. 逻辑判断
- -a #与
- -o #或
- ! #非