バッシュマニュアルから
シェル機能に関連するすべてのリダイレクト(31ページのセクション3.6「リダイレクト」を参照)は、関数の実行時に発生します。
「シェル機能に関するリダイレクト」はどこに指定されていますか?関数定義内のコマンドに指定されますか、それとも関数呼び出しに指定されますか?
引用文で関数が実行されたときにこれらのリダイレクトが発生すると強調するのはなぜですか?
ありがとうございます。
答え1
簡単に言えば、PSkocikがコメントで提案したように、問題の文は、関数の実行が開始される前に上書きされることをbar() { ... } > foo
心配する必要がないことを意味します。つまり、定義されたスクリプトを実行するだけではオーバーライドするのに十分ではありません。実際に呼び出す必要があります。 :)foo
bar()
bar
foo
bar
実際には、関数呼び出し前に変数が拡張/評価されていない> "$foo"
のとは異なり、リダイレクトに変数を使用できることを意味します。> foo
これに関する多くの議論やその他の機能リダイレクトの詳細はここにあります。http://www.linuxjournal.com/content/more-bash-redirections