「シェル機能に関連するすべてのリダイレクトは、機能の実行時に実行されます。」

「シェル機能に関連するすべてのリダイレクトは、機能の実行時に実行されます。」

バッシュマニュアルから

シェル機能に関連するすべてのリダイレクト(31ページのセクション3.6「リダイレクト」を参照)は、関数の実行時に発生します。

「シェル機能に関するリダイレクト」はどこに指定されていますか?関数定義内のコマンドに指定されますか、それとも関数呼び出しに指定されますか?

引用文で関数が実行されたときにこれらのリダイレクトが発生すると強調するのはなぜですか?

ありがとうございます。

ベストアンサー1

簡単に言えば、PSkocikがコメントで提案したように、問題の文は、関数の実行が開始される前に上書きされることをbar() { ... } > foo心配する必要がないことを意味します。つまり、定義されたスクリプトを実行するだけではオーバーライドするのに十分ではありません。実際に呼び出す必要があります。 :)foobar()barfoobar

実際には、関数呼び出し前に変数が拡張/評価されていない> "$foo"のとは異なり、リダイレクトに変数を使用できることを意味します。> foo

これに関する多くの議論やその他の機能リダイレクトの詳細はここにあります。http://www.linuxjournal.com/content/more-bash-redirections

おすすめ記事