Linux shell编程(四)流程控制
在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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |