zoukankan      html  css  js  c++  java
  • Bash编程的test和条件语句

    1、if语句一句条件判断结果选择执行路径。最简单的if-then句型:

    if  command    //如果command的退出状态为0,执行body
    then
        body
    fi

    重点:if认为command的返回0表示为真!!!

    2、test命令经常被用来当作command,来进行复杂的测试。其定义:test命令用来计算其逻辑值,如果结果为真就返回0,否则返回1

    有时候,计算逻辑关系,“算”比“想”快!

    重点:test除了因为逻辑关系,返回假(非0),还会因为内部错误返回假

    一个简单的例子:

    if  [  `whoami` = "root" ]
    then
        echo "You are the superuser"
    fi

    过程是这个样子:命令whoami返回一个用户名的字符串,然后和“root”进行比较,如果相同,则返回0,表示成功执行,也就是说条件为真,执行echo “You are the  superuser"

    3、易出错的地方:由于if认为0为真,如果上面的例子,修改成这样的逻辑:如果用户不是root,那么就输出一个错误信息,并退出,可以写成这个样子:

    if   [ `whoami` != "root" ]
    then
         echo "not root"
         exit 1
    fi

    正常情况下,如果用户是普通用户,那么输出“not root",然后退出吧。我们的想法是,如果不是root,就退出程序,然后给一个友好的提示。可是:如果这个时候,凑巧`whoami`写错了(我就写错过),比如写成了`whoai`(少写一个m),这是该命令返回一个非0整数,然后和字符串”root“比较,整个test肯定返回一个非0(因为比较出错了),这样就导致整个test返回非0,这样就会导致跳过了if语句,没有达到预期的目的。

    if   [ `whoai` != "root" ]   #少写一个m,导致跳过if语句,即使是非root用户也不会退出
    then
         echo "not root"
         exit 1
    fi

    注意:条件测试的时候,一定要注意命令嵌套命令导致的返回非0值,从而跳过if语句。

  • 相关阅读:
    并发队列、线程池、锁
    JVM、垃圾收集器
    Socket网络编程
    Netty入门
    SpringCloud微服务负载均衡与网关
    Android监听耳机按键事件
    利用本地不同磁盘文件夹作为git远程仓库进行灾备
    chrome浏览器form中button每点击一次,form就会提交一次
    [企业路由器] 一对一NAT映射设置指导
    win7镜像自带IE9的卸载
  • 原文地址:https://www.cnblogs.com/litifeng/p/8452095.html
Copyright © 2011-2022 走看看