我正在研究与盐有关的东西。在那里,我在 salt 文档中看到了 onlyif 条件。我对文档中的陈述感到困惑。
Also be aware that the **boolean value** is determined by the **shell's** concept of True and False, rather than **Python's** concept of True and False.
链接:https ://docs.saltstack.com/en/latest/ref/states/requisites.html
我的猜测是
`Shell Python`
True = 0 True = 1
False = 1 False = 0
如果我错了,请纠正我。
在大多数能够将整数视为布尔值的编程语言中,非零值(不仅仅是 1)是“真”,而零值是“假”。
例如在 C 中:
...在 Python 中也是如此(但显然使用不同的语法)。
在 shell 中,这不太有用,因为实用程序想要指示成功或失败来做他们想做的任何事情,并且可能需要用更多的细节来区分失败,而不仅仅是“我失败了”。
这意味着只有一个退出状态,零,这意味着“成功”、“一切正常”或“我做了我应该做的事情”,并且任何其他退出值都应该被视为“失败”。一些实用程序使用多个非零退出状态来进一步让用户知道出了什么问题(例如,参见
rsync
和手册中的“退出代码/值”curl
)。此外,如果一个实用程序被信号杀死,该实用程序的退出状态将为 128 加上信号编号(请参阅
kill -l
您的系统上的)。从POSIX 标准中关于“Shell & Utilities”的介绍性文本(谈论手册的各个部分,欢迎更好的参考):
请注意,库函数有时会为错误条件返回非零(因此为“真”)值。例如,标准 C 函数
fgetc()
并在错误时fputc()
返回EOF
(通常为 -1),这是一个“真”值,因为它不为零。因此,关于在编程语言和 shell 中如何将整数解释为布尔值的讨论与如何报告错误条件(这是两个相关主题)之间存在细微差别。