快速业务通道

Linux shell编程(四)流程控制

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

在Bash Shell中,流程控制命令有两个类:“选择”和“循环”.属于“选择”的有:if,case;属于“循环”的有:for,while,until;命令select既属于“选择”,也属于“循环”.

一.简易的if语法:if-then-else

if ((2<10)); then

echo ''真''

fi

结果为:真

也可以这样写:

if ((2<10)); then echo ''真'';fi

if-then-else

例子:

if [-d /root/tmp]; then

echo ''/root/tmp目录存在''

else

echo ''/root/tmp目录不存在''

fi

使用[]做条件测试,-d会检测这个/root/tmp是否存在,如果判断为真,就显示目录的存在的信息,如果为假,就会显示目录不存在的信息

if的完整语法

if 条件测试1; then

命令区域1

elif 条件测试2;then

命令区域2

else

命令区域3

fi

拥有帝国一切,皆有可能。欢迎访问phome.net其中elif可以多行,数量不限,但else只能有一行.

条件测试的写法

1.执行某一个命令的结果

例子:

#! /bin/bash

if grep -q "rm" fn.sh; then

echo "find rm command"

else

echo "not find"

fi

在条件测试中,执行的命令是:grep -q "rm" fn.sh,它是寻找fn.sh文件里是否有关键词rm.

2.传回某一个命令执行结果的相反值

其形式为:!命令

注意,!和命令之间要有空格符

例子:#! /bin/bash

if ! grep -q "rm" fn.sh; then

echo "not find"

else

echo "find rm command"

fi

在条件测试中,执行的命令是:!grep -q "rm" fn.sh. !表示要传回相反的结果.

3.使用复合命令:((算式))

使用Bash关键词‘[[ ]]’组成的式子:[[ 判断式 ]]

注意:[[的后面、]]的前面,都至少要一个空格.

#! /bin/bash

if [[ str>xyz ]]; then

echo "字符串str比较大"

else

echo "字符串str比较小"

4.使用内置命令:test 判断式

test是bash的内置命令,可传回“判断式”的结果

#! /bin/bash

if test "str" > "xyz"

echo "字符串str比较大"

else

echo "字符串str比较小"

fi

需特别注意的是:大于符号>对bash而言是特殊字符,要用转义. 拥有帝国一切,皆有可能。欢迎访问phome.net

5.使用内置命令:[ ]

其形式为:[ 判断式 ]

[ ]和test用法相同

例子:

#! /bin/bash

if [ "str" > "xyz" ]; then

echo "字符串str比较大"

else

echo "字符串str比较小"

fi

6.使用-a、-o进行逻辑组合

例子:

[ -r filename -a -x filename ]

如果filename可读且可执行,则为真.-a 即“且”之意.

[ -r filename -o -x filename ]

如果filename 可读或可执行,则为真.-o即“或”之意.

7.命令1 && 命令2

&&称为逻辑的AND,其运作的方式:如果“命令1”执行结果为真,才会执行“命令2”.

例如:

[ -z "$PS1" ] && return

先判断$PS1变量值是否为空,如果为空,就执行return命令,由子shell环境返回到父shell,这等于是结束执行该script.

例如:

[ -f /proc/net/if_inet6 ] && echo ''这部主机支持IPv6''

判断/proc/net/if_inet6是否存在,如果存在,就显示支持IPv6协议.

往后,凡是“[ 判断式 ] &&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号