这&&,,,,||, 和呢操作员允许您在Linux上运行许多有用的命令,但是您首先需要使用比通常使用的IF-then-else命令更棘手的语法。
首先,我应该解释说,这篇文章中的命令示例的一件事是使用我可能称之为速记为“如果”测试的东西。这是一个例子:
$ [-f甜甜圈] $ ECHO%?
1
这-f甜甜圈命令询问是否有一个名为“甜甜圈”的文件(-f)。除非我们以“ Echo $?”之后显示返回代码,否则未显示测试的结果。在这种情况下,它是错误的(即不是零),因此我们知道该文件不存在。我们没有甜甜圈!
为了构成类似但相反的测试,我们可以问不甜甜圈文件存在。该测试看起来像这样:
$ [!-f甜甜圈] $ echo $?0
那个时候,结果为真(0)。再次没有甜甜圈。但是,这不是通常使用这些命令的方式。反而,&&或者||根据运行的测试结果添加运算符以运行一些命令。例如,如果没有甜甜圈文件,您可能需要提出这样的投诉:
$ [!-f甜甜圈] &&回声“我们需要甜甜圈!”
关键是理解此命令是&&是一个“和”操作员||是“或”操作员。如果您运行如上图所示的命令,则命令的两侧 - 测试和结果命令 - 如果有不命名为“甜甜圈”的文件。该命令基本上说:“如果文件命名甜甜圈不存在,使用回声命令。使用&&,每当测试的结果是true时,&&运行。如果结果是错误的,则命令结束。
该命令说:“如果有一个名称的目录mydir”,显示清单:
$ [-d mydir] && ls -ld mydir drwxr -xr -x。2 shs shs 4096 Apr 11 11:46 Mydir
在下一个示例中,我们测试目录是否不存在。如果不是,mkdir命令将创建一个。下面显示的第二个命令验证了目录的创建。如果目录已经存在,则命令将产生故障状态,并mkdir命令会不是运行。
$ [!-d newdir] && mkdir newdir $ ls -ld newdir drwxr-xr-x。2 shs shs 4096 Apr 11 11:54 Newdir
当您使用时,情况恰恰相反||。如果命令的第一部分成功(得出“ true”),则第二部分永远不会运行。
为了&&操作员,实施了以下逻辑:
如果结果,则操作========================如果成功,请运行第二命令,如果失败,请结束
如果您使用命令||,命令的第二部分仅在第一个失败时运行。如果第一部分成功,则命令完成。换句话说,如果两部分都可以,则总体命令是成功的。
为了||操作员,实施了以下逻辑:
如果结果,则操作=======================如果成功,请结束如果失败,则运行第二命令
在下一个示例中,我们询问是否有名为“脚本”的目录。如果没有(即测试结果为“ false”),则该命令的第二部分是运行的,并且mkdir命令创建它。如果有脚本目录,则命令结束了mkdir命令不运行。
$ [-D脚本] ||mkdir脚本$ LS -LD脚本DRWXR-XR-X。2 shs shs 4096 Apr 11 12:16脚本
包起来
虽然&&和||行为不同,您可以使用任何一个操作员获得相同的结果。下面的示例说明了这一点。
下面的每个命令将创建一个名为的文件笔记如果一个人不存在,如果这样做,什么也不做。
$ [!-f注释] && touch notes $ [-f注释] ||调笔
同样,下面的两个命令中的每一个都创建了脚本目录如果尚未存在,否则没有进行更改。
$ [!-d脚本] && mkdir脚本$ [-D脚本] ||mkdir脚本
使用时&&和||似乎有些棘手,有点练习,一些方便的示例命令确实可以回报。