关于linux true和false命令的真相

真假命令如何工作,以及如何将它们用于命令行和脚本中。

  • 在脸书上分享
  • 分享到Twitter
  • 分享LinkedIn.
  • 分享Reddit.
  • 通过电子邮件分享
  • 打印资源
是的,霓虹灯签名取消流行语只是说萨拉威特702盖蒂没有红色霓虹灯
sarawuth702 /盖蒂图像

真和假是各种形式的计算中的常见概念。他们毕竟对布尔逻辑至关重要,但你知道吗?真的错误的也是Linux上的命令吗?你知道如何使用它们吗?

最简单的解释是真的命令生成0的退出代码和那个错误的命令生成一个退出代码为1.此说明不提供如何最好地使用这些命令的详细信息。

在这篇文章中,我们会看看如何真的错误的命令工作以及如何将它们用于命令行或脚本中的方式。

查看退出代码

首先,重要的是要记住,Linux系统上的成功退出代码(A.k.a.“返回代码”)是0.将此视为含义“零错误”。指示某种形式的故障的退出代码将具有1或更高的值。

随时在Linux上运行命令,将生成退出代码。虽然您将看到预期的输出或错误消息,但如果您询问,您只会看到退出代码。要问,您只需使用命令回声$?。这$?字符串表示退出代码和回声命令将显示这样的代码:

$ echo hello hello $ echo $?0.

命令echo你好成功,因此退出代码为0。

以下是当命令不成功时显示退出代码的简单示例。击中键盘上的一堆随机键,最终会看到这样的东西:

$ asjdlkjdad bash:asjdlkjdad:找不到命令...

请求后立即查看退出代码,您会看到这个:

$ echo $?127.

退出代码为127表示您刚才键入的命令不存在于系统上。

这是我们尝试显示不存在的文件的另一个例子:

$ cat dhksdfhjksfjhskfhjd cat:dhksdfhjksfjhskfhjd:没有这样的文件或目录$ echo $?1

1退出代码是常规退出代码的内容,并将返回各种错误。

使用真和假

看到如何理解的最简单方法真的错误的命令在命令行上工作是运行这些命令:

$ true;回声$?0 $ false;回声$?1

如你看到的,真的只是返回0和错误的只需返回一个1。

可能是最常见的使用真的命令是启动无限循环。而不是使用像这样的命令启动循环虽然[$ num -le 12345678], 您可以使用虽然是真的并且循环继续,直到你停止它将是一个^ C.

虽然真正的回声“仍在运行”睡眠10

一个虽然假循环将立即失败。但是,启动无限循环的另一种方法是使用这样的语法:

直到假;回声仍在运行睡眠10完成

当你通过打字停止否则无限的循环^ C.然后检查返回码,你应该看到这个:

$ run-forever仍在运行仍在运行^ c $ echo $?130.

130退出代码确认循环已终止^ C.

$更多跑步直到false;回声仍在运行睡眠10完成

如果您想要一个命令来导致成功的退出代码,即使命令本身失败,您也可以将其输出管道真的像这样:

$ cat nosuchfile |真的;回声$?Cat:nosuchfile:没有这样的文件或目录0<==退出代码

您仍然收到错误消息,但退出代码将为0(成功)。

如果你使用如果测试如下所示,如果是真的将始终运行指定的命令,如您所期望的那样,如果是假的永远不会执行嵌入式命令。

如果为true>则> echo此命令始终运行> fi
如果false>则始终运行此命令> echo此命令从不运行> fi $

如你所见,如果是假的命令没有输出,因为回声命令未运行。

使用冒号代替真的具有与使用相同的效果真的。这是一个例子:

$ if:>然后> echo这个命令始终运行> else> echo这个命令永远不会运行> fi这个命令始终运行

也可以设置自己的退出代码。例如,如果您有命令111号出口在下面示例中显示的脚本中,脚本的退出代码将为111。

#!/ bin / bash如果[$#== 0];然后回显“$ 0 filename”退出1 fi echo $ 0出口111

当我们运行脚本时,我们会看到这样的东西:

$ MyScript oops / home / shs / bin / oops

我们看到正在验证的文件的全名。

但是,当我们检查退出代码时,我们将看到这一切:

$ echo $?111.

包起来

真的错误的命令的功能有限,但是当您需要对退出代码的某些控件或要运行命令之前,它们可能会有所帮助,直到您准备杀死它。

加入网络世界社区有个足球雷竞技appFacebooklinkedin评论最重要的主题。
有关的:

版权所有©2022 IDG ComRaybet2munications,Inc。

SD-WAN买家指南:要询问供应商(和您自己)的关键问题