3

次のコマンドを発行するようなbashスクリプトmyscriptを記述したいと思います。

myscript> filename.txt

出力がリダイレクトされるファイル名の名前filename.txtを返します。これは可能ですか?

4

2 に答える 2

1

使用lsof

outfile=$(lsof -p $$ | awk '/1w/{print $NF}')
echo $outfile
于 2012-08-24T16:38:38.727 に答える
1

Linuxで実行している場合は、/proc/self/fd/1リンク先を確認してください。

たとえば、スクリプトは次のことを実行できます。

#!/bin/bash
readlink /proc/self/fd/1

そしてそれを実行します:

$ ./myscript > filename.txt
$ cat filename.txt
/tmp/filename.txt

/proc/self出力ファイルの値を変数などに保存する場合は、サブシェルで異なるため使用できませんが、使用することはできます$$

outputfile=$(readlink /proc/$$/fd/1)
于 2012-08-24T17:13:13.140 に答える