Qual é o valor do booleano (True e False) no conceito Python e no conceito de shell?

1

Estou trabalhando em coisas relacionadas ao sal. Lá eu vi a única condição em documentos de sal.Estou confuso 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: link

Meu palpite é

  'Shell         Python'

   True = 0      True = 1
  False = 1    False = 0

Por favor, corrija-me se estiver errado.

    
por Abdulvakaf K 08.03.2018 / 15:54

1 resposta

3

Na maioria das linguagens de programação que são capazes de tratar inteiros como booleanos, um valor diferente de zero (não apenas 1) é "verdadeiro" e o valor zero é "falso".

Por exemplo, em C:

int a = some_function();

if (a) {
    puts("some_function returned a non-zero value");
}

... e similarmente em Python (mas obviamente com sintaxe diferente).

No shell, isso é menos útil, pois as concessionárias gostariam de sinalizar o sucesso ou a falha de fazer o que gostariam de fazer, e uma falha pode precisar ser diferenciada com mais detalhes do que "falha" .

Isso significa que há um único status de saída, zero, que significa "sucesso", "tudo correu bem" ou "Eu fiz o que deveria fazer" e que qualquer outro valor de saída deve ser considerado como " falha". Alguns utilitários usam mais de um status de saída diferente de zero para informar ainda mais ao usuário o que deu errado (consulte, por exemplo, "CÓDIGOS DE SAÍDA / VALORES" nos manuais de rsync e curl ).

Além disso, se um utilitário for eliminado 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).

De texto introdutório sobre "Shell e utilitários" no padrão POSIX ( falando sobre várias seções de um manual, uma referência melhor é bem-vinda):

The EXIT STATUS section describes the values the utility shall return to the calling program, or shell, and the conditions that cause these values to be returned. Usually, utilities return zero for successful completion and values greater than zero for various error conditions. If specific numeric values are listed in this section, the system shall use those values for the errors described. In some cases, status values are listed more loosely, such as >0. A strictly conforming application shall not rely on any specific value in the range shown and shall be prepared to receive any value in the range.

For example, a utility may list zero as a successful return, 1 as a failure for a specific reason, and >1 as "an error occurred". In this case, unspecified conditions may cause a 2 or 3, or other value, to be returned. A conforming application should be written so that it tests for successful exit status values (zero in this case), rather than relying upon the single specific error value listed in this volume of POSIX.1-2008. In that way, it has maximum portability, even on implementations with extensions.

Observe que as funções da biblioteca às vezes retornam valores diferentes de zero (e, portanto, "verdadeiros") para condições de erro. Por exemplo, as funções C padrão fgetc() e fputc() retornam EOF (geralmente -1) no erro, que é um valor "verdadeiro", já que é 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).

    
por 08.03.2018 / 16:15