Estou trabalhando em coisas relacionadas ao sal. Lá eu vi a condição onlyif em documentos salt. Estou confuso com a declaração dada no documento.
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.
Link: https://docs.saltstack.com/en/latest/ref/states/requisites.html
Meu palpite é
`Shell Python`
True = 0 True = 1
False = 1 False = 0
Por favor corrija-me se eu estiver errado.
Na maioria das linguagens de programação que são capazes de tratar números inteiros como booleanos, um valor diferente de zero (não apenas 1) é "verdadeiro" e o valor zero é "falso".
Por exemplo em C:
... e da mesma forma em Python (mas obviamente com sintaxe diferente).
No shell, isso é menos útil, pois os utilitários gostariam de sinalizar o sucesso ou a falha em fazer o que eles gostariam de fazer, e uma falha pode precisar ser distinguida com mais detalhes do que apenas "eu falhei".
Isso significa que existe um único status de saída, zero, que significa "sucesso", "tudo correu bem" ou "fiz o que deveria fazer" e que qualquer outro valor de saída deve ser considerado "falha". Alguns utilitários usam mais de um status de saída diferente de zero para permitir que o usuário saiba o que deu errado (consulte, por exemplo, "CÓDIGOS/VALORES DE SAÍDA" nos manuais de
rsync
ecurl
).Além disso, se um utilitário for interrompido por um sinal, o status de saída do utilitário será 128 mais o número do sinal (consulte
kill -l
em seu sistema).Do texto introdutório sobre "Shell & Utilities" no padrão POSIX (falando sobre várias seções de um manual, uma referência melhor é bem-vinda):
Observe que as funções de biblioteca às vezes retornam valores diferentes de zero (e, portanto, "verdadeiros") para condições de erro. Por exemplo, o C padrão funciona
fgetc()
efputc()
retornaEOF
(geralmente -1) em caso de erro, que é um valor "verdadeiro", pois é diferente de zero.Portanto, há uma diferença sutil entre a discussão sobre como os inteiros são interpretados como booleanos nas linguagens de programação e no shell e como as condições de erro são relatadas (esses são dois tópicos relacionados).