| 
	if语句和其他编程语言相似,都是流程控制语句。它的语法是: 
	
		
			  
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 
							12 
							13 
							14 
							15 
							16 
							17 
							18 
							19 
							20 
							21 
							22 
							23 
							24 
							25 
							26 
							27 | 
							
								<p> 
								<span><strong><em>if [ expression ] then statments fi</em></strong></span> 
								</p> 
								  
								<p> 
								<span>或者</span> 
								</p> 
								  
								<p> 
								<span><strong><em>if [ expression ] then statments else statments fi</em></strong></span> 
								</p> 
								  
								<p> 
								<span>或者</span> 
								</p> 
								  
								<p> 
								<span><strong><em>if [ expression ] then statments else if [ expression ] then  statments else statments  fi</em></strong></span> 
								</p> 
								  
								<p> 
								<span>或者</span> 
								</p> 
								  
								<p> 
								<span><strong><em>if [ expression ] then statments elif [ expression ] then statments else statments fi</em></strong></span> 
								</p> |  
	实际例子: 
	与其他语言不同,Shell Script中if语句的条件部分要以分号来分隔。第三行中的[]表示条件测试,常用的条件测试有下面几种:
		
			  
			
				
					| 
							1 
							2 
							3 
							4 
							5 
							6 
							7 
							8 
							9 
							10 
							11 
							12 
							13 | 
							
								#!/bin/sh 
								#print hello world in the console window 
								if [ $# -lt 3 ] 
								then 
								cat<<HELP 
								ren -- renames a number of  files using sed regular expressions 
								 6 
								 7 
								8 
								9 
								HELP 
								  exit 0 
								fi |  
	  
	[ -f "$file" ] 判断$file是否是一个文件 
	[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于 
	[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性 
	[ -n "$a" ] 判断变量$a是否有值,测试空串用-z 
	[ "$a" = "$b" ] 判断$a和$b的取值是否相等 
	[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立 
	要注意条件测试部分中的空格。在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。 
	$#表示包括$0在内的命令行参数的个数。在Shell中,脚本名称本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整个参数列表,不包括$0,也就是说不包括文件名的参数列表。 
	现 在我们明白第三行的含义是如果脚本文件的参数少于三个,则执行if和fi语句之间 的内容。然后,从第四行到第十一行之间的内容在Shell Script编程中被称为Here文档,Here文档用于将多行文本传递给某一命令。Here文档的格式是以<<开始,后跟一个字符串,在 Here文档结束的时候,这个字符串同样也要出现,表示文档结束。在本例中,Here文档被输出给cat命令,也即将文档内容打印在屏幕上,起到显示帮助 信息的作用。 
	exit是Linux的命令,表示退出当前进程。在Shell脚本中可以使用所有的Linux命令,熟练使用Linux命令也可以大大减少Shell脚本的长度。 
	总结: 
	整数变量计算,有如下几种:" + - * / % ",他们的意思和字面意思相同。整数运算一般通过 let 和 expr 这两个指令来实现,如对变量 x 加 1 可以写作:let "x = $x + 1" 或者 x=`expr $x + 1` 
	在比较操作上,整数变量和字符串变量各不相同,详见下表: 
	
		
			
				| 
						对应的操作 | 
						整数操作 | 
						字符串操作 |  
				| 
						相同 | 
						-eq | 
						= |  
				| 
						不同 | 
						-ne | 
						!= |  
				| 
						大于 | 
						-gt | 
						> |  
				| 
						小于 | 
						-lt | 
						< |  
				| 
						大于或等于 | 
						-ge |  |  
				| 
						小于或等于 | 
						-le |  |  
				| 
						为空 |  | 
						-z |  
				| 
						不为空 |  | 
						-n 
						  |  
	BASH 中用于判断文件属性的操作符: 
	注意:表中的 file 及 file1、file2 都是指某个文件或目录的路径。 
	
		
			
				| 
						运算符 | 含义( 满足下面要求时返回 TRUE ) |  
				| 
						-e file | 文件 file 已经存在 |  
				| 
						-f file | 文件 file 是普通文件 |  
				| 
						-s file | 文件 file 大小不为零 |  
				| 
						-d file | 文件 file 是一个目录 |  
				| 
						-r file | 文件 file 对当前用户可以读取 |  
				| 
						-w file | 文件 file 对当前用户可以写入 |  
				| 
						-x file | 文件 file 对当前用户可以执行 |  
				| 
						-g file | 文件 file 的 GID 标志被设置 |  
				| 
						-u file | 文件 file 的 UID 标志被设置 |  
				| 
						-O file | 文件 file 是属于当前用户的 |  
				| 
						-G file | 文件 file 的组 ID 和当前用户相同 |  
				| 
						file1 -nt file2 | 文件 file1 比 file2 更新 |  
				| 
						file1 -ot file2 | 文件 file1 比 file2 更老 |  
 
 (责任编辑:IT)
 |