3

我想编写一个 bash 脚本 myscript 以便发出以下命令:

我的脚本 > 文件名.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因为它在 subshel​​l 中会有所不同,但您仍然可以使用$$

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