bash中多命令的执行关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash中多命令的执行关系相关的知识,希望对你有一定的参考价值。

bash的多命令执行的逻辑关系;
    1.命令替换
        COMMAND1 $(COMMAND2)

[[email protected] ~]# cp -a /etc /tmp/etc-$(date +‘%F-%T‘)
[[email protected] ~]# ls /tmp
etc-2017-11-17-17:13:35

    2.管道
        COMMAND1 | COMMAND2 |COMMAND3..

[[email protected] ~]# ll /tmp | wc -l 
13

    3.顺序执行结构
        COMMAND1 ; COMMAND2 ; COMMAND3

[[email protected] ~]# 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


以上是关于bash中多命令的执行关系的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记:bash特性之多命令执行,shell脚本

Linux bash基础特性二

markdown 通过bash命令运行Cacher片段内容

-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory(代码片段

谢烟客---------Linux之bash脚本编程---if补充和for循环

Bash-在每个grep对应关系上运行命令而不停止尾部-n0 -f