bash多命令执行

bash的多命令执行的逻辑关系;
1.命令替换
    COMMAND1 $(COMMAND2)
[root@localhost ~]# cp -a /etc /tmp/etc-$(date +'%F-%T')
[root@localhost ~]# ls /tmp
etc-2017-11-17-17:13:35
2.管道
    COMMAND1 | COMMAND2 |COMMAND3..
    [root@localhost ~]# ll /tmp | wc -l 
    13
3.顺序执行结构
    COMMAND1 ; COMMAND2 ; COMMAND3
[root@localhost ~]# useradd ex2;useradd ex3
4.选择执行结构;
    如果。。。那么。。。
    要么。。。要么。。。

    逻辑运算结构:
        与:逻辑乘法,1--真,0--假 && 双目操作符
            1 && 0 = 0
            0 && 1 = 0
            0 && 0 = 0
            1 && 1 = 1
        "与"运算的短路元算法则:只要第一个操作数为false,则其逻辑运算结果一定为false;

        或:逻辑加法,1--真,0--假 || 双目操作符
            1 || 1 = 1
            1 || 0 = 1
            0 || 1 = 1
            0 || 0 = 0
        "或"运算的短路运算法则:只要第一个操作数为true,则其逻辑运算结果一定为true;

        非:逻辑取反,1--真,0--假,!,弹幕操作符
            !0 = 1
            !1 = 0

    命令的执行状态返回值:就是echo $?
        SUCCESS: 0--TRUE(true)
        FAILURE: 1-255--FALSE(false)

        COMMAND1 && COMMAND2
        表示:
            1.如果COMMAND1能够成功执行,那么将会执行COMMAND2;
            2.如果COMMAND1执行失败,那么COMMAND2将不会执行;

        COMMAND1 || COMMAND2
        表示:
            1.只有COMMAND1执行失败,COMMAND2才会被执行;
            2.如果COMMAND1执行成功,那么COMMAND2将不会被执行;

        !COMMAND1 && COMMAND2 相当于 COMMAND1 || COMMAND2
        !COMMAND1 || COMMAND2 相当于 COMMAND1 && COMMAND2

        德·摩根定律:
        !(COMMAND1 && COMMAND2) || COMMAND3  1和2都执行成功,才会执行3
        !(COMMAND1 || COMMAND2) && COMMAND3  1和2都执行失败,才会执行3

        !(A && B) = !A || !B
        !(A || B) = !A && !B

    三种逻辑运算的优先级:
        ! > && > ||

    示例:
        如果用户user4存在并且其家目录也存在,那么就执行userdel -r user4;

        id user4 && ls -d /home/user4 && userdel -r user4 

猜你喜欢

转载自blog.51cto.com/wangzhihang/2126534