Linux Shell-《Linux Shell编程从入门到精通》第九章上机题9分析

一、起因

一个小段的脚本:

 

执行后的结果是

 

纳闷了,为啥呢

二、寻找原因

1、Shell中的自增自减与C语言类似:

     图中表达式--a的结果是0;表达式b--的结果是1。其中a,b的值经过自减运算后均为0.

     然后在命令行中对let命令进行测试,结果如下图:

 

       前者执行失败,后者执行成功。

2、Shell 中关于&&和||的介绍文章网上比较多:

     && 运算符:

      格式:command1 && command2

       &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。
语法格式如下:

      command1 && command2 && command3 ...
  1. 命令之间使用 && 连接,实现逻辑与的功能。
  2. 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
  3. 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

    || 运算符:

    格式:command1 || command2

    ||则与&&相反。如果||左边的命令(command1)未执行成功,那么就执行||右边的命令(command2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。

  1. 命令之间使用 || 连接,实现逻辑或的功能。

  2. 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。

  3. 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

参考所示:https://www.cnblogs.com/aaronLinux/p/8340281.html

三、结论

 

 let --a   命令执行失败,返回1,执行||后面的命令;

 let b--   命令执行成功,返回0,执行&&后面的命令。

哪里还有问题呢?

 

posted @ 2020-07-02 14:35  whatawheat  阅读(133)  评论(0)    收藏  举报