快速业务通道

linux shell编程语句if、case.

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-06

shell学习笔记--if,case

shell的控制流结构主要有if语句、for语句、case语句、while语句、until语句这五种,在shell中这些语句的用法有点类似C语言,很容易学会,但也很容易忘记,只有经常实用它们才不会很快忘记,像我之前看的时候很快就看完了,但是很久没用,过一阵子又把它忘记了,现在又重看了一遍才记起来,好了,下面将详细介绍这几种语句的用法:

1、if then else 语句

if then else语句的基本格式如下:

if 条件1

then 命令1

elif 条件2

then 命令2

else 命令3

fi

if语句以if开头,而以fi结束,在shell中的控制流结构的分支语句都是像这样开头跟结束的语句相反反过来,如下面的case语句,以case开头,以esac结束.elif即C语言的else if的意思.如果你只有一个条件,就没必要用到elif、else了,这些都是你根据需要去使用的.当然了,如果你有很多个条件,你也可以使用多个elif,就像C语言一样. 拥有帝国一切,皆有可能。欢迎访问phome.net

举个例子:

$cat iftest

#!/bin/sh

#iftest

if [ “10” -lt “12” ]

then

echo “yes,10 is less than 12”

fi

执行一下iftest

$./iftest

yes,10 is less than 12

这里的[]是测试命令,测试里面的内容是真还是假,如果为真则该测试命令返回的结果是真,如果为假则该测试命令返回的结果为假.这里要注意的是[]与中间的内容一定要在两边各留一个空格,否则会出错.如[“10” -lt “12”]这样是错误的写法,一定要在两边各留一个空格才是测试命令.这里可以看出,if后面跟着的是一条命令,if这里明明要跟一个条件才对啊,为什么会跟一条命令呢?这是在shell中,所有的命令执行后都有一个返回值,if是接收到该返回值作为它的条件,也就是真还是假这两种条件,如果该命令执行成功,则if的条件为真,失败则为假了.像我们平时执行ls、cp、touch、mkdir等等这些命令时系统都会返回一个值表示执行该命令是否成功,该返回值就保存在$?这里了,如果你要看它的值就可以用:echo $?来查看了.如: 拥有帝国一切,皆有可能。欢迎访问phome.net

$ls

a.txt b.doc

$echo $?

0

在linux中一般用0表示执行成功,而非0则表示失败.如:

if ls

then

echo “Yes”

else

echo “no”

fi

该程序执行后的结果将会打印出Yes.这里ls执行成功后返回的值为0(成功),if接收到成功信号则其条件为真,就打印出Yes了.这里不要跟C的if混淆了,在C中0为假,非0为真,而这里倒反过来了,0为真,非0则为假了.这个就涉及到linux的习惯了,linux习惯用0来表示成功,非0表示失败.这里还要小心,不能像这样用:if (“10” -lt “12”).上面的[ “10” -lt “12” ]也是一个命令来的,相当于命令:test “10” -lt “12”.test是一个测试命令,如果要讲测试命令还有很多要讲,这里就直接讲控制流结构,至于测试命令有空再写了. 拥有帝国一切,皆有可能。欢迎访问phome.net

2、case 语句

case语句的格式如下:

case 值 in

模式1)

命令1

...

;;

模式2)

命令2

...

;;

......

esac

上面的;;有点相当于C中case中的break语句的意味了,即执行完该模式后跳出case语句,不过有点不同的就是,shell中的case语句如果没有;;就会报错,但是C中的case语句少了break,语法上还是正确的,只是在符合该模式后还会继续执行直到遇到break或直到结束为止.在shell的case语句中,可以使用匹配模式,就是前面说过的元字符匹配模式,而不是正则表达式的匹配.如: 拥有帝国一切,皆有可能。欢迎访问phome.net

* 匹配所有的字符

? 匹配单个字符

[...]匹配[]括起的字符

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号