私は現在Debianパッケージを閲覧しており、いくつかのコード例を読んでいます。たとえば、postinst
スクリプトの各行はパターンです。
some command || true
another command || true
したがって、一部のコマンドが失敗した場合、その行はtrueを返しますが、これがプログラムの出力にどのような影響を与えるかはわかりません。
ベストアンサー1
このパターンの理由は、Debianパッケージのメンテナスクリプトがで始まる傾向があるためですset -e
。これにより、すべてのコマンド(厳密にはパイプ、リスト、または複合コマンド)がゼロ以外の状態で終了するとすぐにシェルが終了します。これはエラーを蓄積しません。問題が発生するとすぐにスクリプトがハングします。
スクリプトのコマンドが失敗する可能性がある場合、追加すると|| true
生成された複合コマンドは常にステータス0で終了するため、スクリプトは中断されません。たとえば、ディレクトリを削除することは致命的なエラーではありません(パッケージが削除されるのを防ぎます)。
rmdir ... || true
rmdir
エラーを無視するように指示するオプションがないためです。