Python概念とShell概念のブール値(TrueとFalse)の値は何ですか?

Python概念とShell概念のブール値(TrueとFalse)の値は何ですか?

塩に関することをしています。そこで私はソルトファイルで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/executives.html

私の推測は

  `Shell         Python`

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

間違っていたら訂正してください。

ベストアンサー1

整数をブール値として扱うことができるほとんどのプログラミング言語では、ゼロ以外の値(1だけではありません)は「true」、0の値は「false」です。

たとえば、Cでは次のようになります。

int a = some_function();

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

...Pythonに似ています(しかし明らかに構文は異なります)。

シェルでは、ユーティリティが目的の操作について成功または失敗を通知したいと考えており、「I failed」よりも詳細に失敗を区別する必要があるため、これはあまり役に立ちません。

これは、「成功」、「すべてうまくいきました」、または「何をすべきか」を意味する終了ステータス0があることを意味します。他のすべての終了値は「失敗」と見なされるべきです。一部のユーティリティは、ゼロ以外の複数の終了ステータスを使用して、ユーザーに何が間違っているかをさらに知らせます(例:およびrsyncマニュアルの「終了コード/値」を参照curl)。

また、ユーティリティがシグナルによって終了すると、ユーティリティの終了ステータスは128にシグナル番号を加えた値になります(kill -lシステム参照)。

~から「シェルとユーティリティ」の紹介テキストPOSIX規格では(マニュアルのさまざまな部分について話すことでより良い参照を歓迎します):

このEXIT STATUSセクションでは、ユーティリティが呼び出し元プログラムまたはシェルに返す必要がある値と、これらの値が返される条件について説明します。通常、ユーティリティは正常に完了すると 0 を返し、さまざまなエラー条件では 0 より大きい値を返します。このセクションに特定の値がリストされている場合、システムはこれらの値を使用してエラーを説明する必要があります。場合によっては、ステータス値は> 0など、より緩やかに一覧表示されます。厳密に互換性のあるアプリケーションは、表示された範囲内の特定の値に依存してはならず、その範囲内のすべての値を受け取る準備ができている必要があります。

たとえば、ユーティリティは0を正常に返し、1を特定の理由による失敗として、> 1を「エラー発生」としてリストできます。この場合、指定されていない条件によって2、3、またはその他の値が返されることがあります。 POSIX.1-2008のこのボリュームにリストされている単一の特定のエラー値に頼るのではなく、正常な終了状態値(この場合は0)をテストするために準拠アプリケーションを作成する必要があります。これにより、拡張機能を備えた実装でも移植性が最大化されます。


ライブラリ関数は、エラー条件に対してゼロ以外(したがって「true」)の値を返すことがあります。たとえば、標準のC関数はfgetc()errorに対して(通常-1)をfputc()返します。これはゼロではないため、「true」値です。EOF

したがって、プログラミング言語とシェルで整数がブール値として解釈される方法と、エラー条件が報告される方法(2つの関連項目)に関する議論の間には微妙な違いがあります。

おすすめ記事