STDOUT + STDERR出力...出力を空の文字列として扱うこととNULLとして扱うことの違いは何ですか?

STDOUT + STDERR出力...出力を空の文字列として扱うこととNULLとして扱うことの違いは何ですか?

私はLinuxシェルコマンドを実行し、コマンドの詳細をSQLデータベースに書き込むいくつかのアプリケーションコードを書いています。これには、STDOUT + STDERR(別途)の出力が含まれます。

コマンドの実行後にプロセスが何も出力しないと仮定すると、STDOUT / STDERRフィールドをNULLにして空の文字列に設定する理由はありますか?

つまり、これら2つの間に技術的な違いはありますか?

  • STDOUTに何も出力しないプロセス
  • STDOUTに空の文字列(それ以上はありません)を出力するプロセス

また別の方法で質問しましょう。 SQLでこれらの列をNOT NULLにするのは妥当ですか?

ベストアンサー1

パイプ(std-err / out)には空の文字列という概念がなく、単に「出力なし」です。

> printf '' 
> printf '' | xxd

nullとは何ですか?

> printf '\0'
> printf '\0' | xxd
00000000: 00

データベースでは、その逆が真であり、少ないほど多いので、スクリプトを自動的に作成し(空の文字列)、データベースを空(空)に設定します。

おすすめ記事