2016-04-07 11 views
-1

bashでパラメータとして出力リダイレクトファイル名を取得できるかどうかを知りたいですか?例えばbashでパラメータとして出力リダイレクトを取得する方法は?

./myscript.sh parameter1 > outputfile 

は$ 2のようなパラメータとして "OUTPUTFILE" を取得する方法はありますか?私のスクリプトでは、私は出力ファイルでいくつかの操作を行う必要がありますが、私はどのファイルを更新しなければならないのかわかりません... 2番目の問題は、このスクリプトはすでに実行されています。

お礼

+0

私はこの問題を理解していません。スクリプトは 'doSomething> $ 2のように、名前がパラメータとして与えられたファイルに確実にリダイレクトできます。そしてもう少し-foo $ 1 >> $ 2'。 –

+0

どのような操作を行う必要がありますか?ファイルを直接操作すると、 'stdout'に書き出される通常の出力と衝突する可能性があります。 – Barmar

答えて

0

リダイレクトはプログラムのパラメータではありません。プログラムの出力がリダイレクトされると、シェルはファイルを開き、プログラムを実行する前にファイル記述子2をそのファイルに接続します。次に、プログラムはfd 2(別名stdout)に書き込むだけで、ファイルに移動します。

Linuxおよび同様のシステムでは、/dev/stdoutを使用できます。これは、プロセスのstdoutファイルへのシンボリックリンクです。

関連する問題