私は多くのシェルスクリプトをハッキングしてきましたが、時には最も単純なことが私を困惑させます。今日、:
(コロン)bashビルトインを広範囲に使用するスクリプトに出会いました。
documenationは、単純な十分です。
: (a colon) : [arguments]
引数を展開してリダイレクトを実行する以外は何もしません。戻りステータスはゼロです。
ただし、これはシェル拡張のデモンストレーションで使用されているだけです。私が出会ったスクリプトのユースケースでは、この構造を広範囲に使用しました。
if [ -f ${file} ]; then
grep some_string ${file} >> otherfile || :
grep other_string ${file} >> otherfile || :
fi
実際には何百ものグレープがありましたが、それらは同じものです。上記の単純な構造以外の入出力リダイレクトは存在しません。スクリプトの後半で戻り値はチェックされません。
私はこれを「または何もしない」という意味のない構成として読んでいます。これらの不満を「または何もしない」で終わる目的は何ですか?どのような場合、この構成は|| :
、すべてのインスタンスから単純に離脱するのとは異なる結果を引き起こしますか?
:
、の代替として使用することtrue
です。おそらくerrexit
設定されており、作成者はいくつかのコマンドの終了ステータスを気にしません。