文档介绍:shell编程-shell编程-分支语句(1)
Shell编程-分支语句(1)
目标:
完成这一章,你将能够作以下事情:
描述条件分支语句中返回值的作用。
使用test命令来分析一个命令的返回值。
在shell程序中使用if和case结构。
 
 shell变量“?”中保存上一个被执行命令的返回值:
 0: 命令成功地执行(真)
非零:命令由于出现错误而被终止(假)
 例子:
$ true $ false
$ echo $? $ echo $?
0 1
$ ls $ cp
$ echo $? Usage: cp f1 f2
0 cp [-r] f1 ....fn d1
$ echo $?$echo $?
0 1
$echo $?
0
UNIX操作系统的所有命令在结束的时候都会产生一个返回值。这个返回值通常被用来判断命令是正常结束(返回0)还是发生了错误(返回非零值)。通过返回的非零值还可以看出发生的是什么错误。例如,语法错误通常返回1,true命令返回的就是0,而false命令返回的是1。
大多数的shell程序中的判断语句都是通过分析这个返回值来进行流程控制的。shell中定义了一个特殊的变量“?”用来保存上一个命令结束后的返回值。
你可以通过以下方式来观察前一个命令的返回值:
echo $?
当你执行一个条件判断(小于,大于,等于)的时候,返回值会指明这个条件是否为真(返回0)或者为假(返回非零)。
条件判断语句会在下几节中讲述。
  命令
语法:
test expression 或者[expression]
test命令对表达式进行测试,并且设置返回值。
 表达式的值返回值
true0
false非零(通常为1)
test命令能够测试的对象有:
整数
字符串
文件
test命令被用来评估表达式并且产生返回值。它用参数组成逻辑表达式并且对表达式的返回值进行评估,test命令不会产生标准输出,你必须必须通过返回值来判断test命令的结果,如果表达式为真,返回值会为0,如果表达式为假,返回值为1。
test命令可以被单独使用,然后你能够看到返回值,但它用的最多的还是在if和while结构中用来提供条件流程控制。
test命令的也可以用[expression]来代替。这种方式可以提高可读性,特别是在处理数字或者字符串的时候。
注意:在"["和"]"符号的周围必须要有空格。
 
语法:
[ number relation number ]通过关系运算符来对数字进行比较
关系运算符:
-lt 小于
-le 小于或者等于
-gt大于
-ge 大于或者等于
-eq 等于
-ne 不等于
例子(假设X=3):
$ [ "$X" -lt 7]$ [ "$X" -gt 7]
$ echo $?