在bash中运行命令如果上一个命令成功,bash如何决定该命令是否成功

在bash中运行命令如果上一个命令成功,bash如何决定该命令是否成功,bash,Bash,当运行这一行bash时 ls file.txt && echo "Exists" || echo "Not exists" 如果文件存在,则Bash echos存在;如果文件不存在,则Bash echos不存在。 所以逻辑是 true && echo "Exists" || echo "Not exists" 问题是:bash如何决定命令是否成功?ls命令将0作为成功的退出代码,在这种情况下,bash如何解释0表示true?这只是一种退出代码惯例,基本上适用于

当运行这一行bash时

ls file.txt && echo "Exists" || echo "Not exists"
如果文件存在,则Bash echos存在;如果文件不存在,则Bash echos不存在。 所以逻辑是

true && echo "Exists" || echo "Not exists"

问题是:bash如何决定命令是否成功?ls命令将0作为成功的退出代码,在这种情况下,bash如何解释0表示true?

这只是一种退出代码惯例,基本上适用于所有现代操作系统

若我们想在Web上制作一个并行示例,404返回码意味着找不到页面。 在这种情况下,404的选择只是一种约定

在BASH中,基本上,任何不是0的退出代码都是某种错误

以下是BASH保留退出代码的完整列表:

你可能会问,为什么具体是0

<>在C和C++程序中,main函数是int型的,因此它应该返回一个整数值。主函数的返回值被视为应用程序的退出状态。 在大多数操作系统上,返回0表示成功状态,这是一种非常简洁的报告程序运行良好的方式。 在C++中,可选的是返回0;在主函数的末尾,因为编译器会自动包含它

程序本身中实现的特定逻辑将声明程序执行是否正常

例如,我可以实现一个负责删除文件的程序,如果在文件删除过程中出现错误,我将返回-1,否则在删除过程结束时,如果没有错误/异常,我将返回0

您可以通过查看Linux命令的源代码来了解更多信息

例如

在评论之后编辑 仅当左侧的退出状态为零(即true)时,才会计算&&的右侧。 另一方面| |则相反,仅当左侧退出状态为非零(即false)时,它才会计算右侧

BASH对0的行为仅与此类运算符相关

换言之:

$ false && echo working

$ true && echo working
working
$ true || echo working

$ false || echo working
working

对于ls命令,当ls成功查找某些内容时,它将以0退出。此0退出代码是否被解释为TRUE?bash是否对所有将0解释为TRUE的命令都执行相同的操作?非常感谢您的完整回答,并在注释后进行编辑。现在一切都清楚了。谢谢,阿加尼,我很高兴它帮了我的忙!布奥纳·塞拉塔: