我想写一个bash脚本myscript,发出这个命令:
myscript> FILENAME.TXT
将返回其输出重定向到的文件名,filename.txt。这可能吗?
答案 0 :(得分:1)
使用lsof
:
outfile=$(lsof -p $$ | awk '/1w/{print $NF}')
echo $outfile
答案 1 :(得分:1)
如果您在Linux上运行,请检查/proc/self/fd/1
链接的位置。
例如,脚本可以执行以下操作:
#!/bin/bash
readlink /proc/self/fd/1
然后运行它:
$ ./myscript > filename.txt
$ cat filename.txt
/tmp/filename.txt
请注意,如果要将输出文件的值保存到变量或其他内容,则不能使用/proc/self
,因为它在子shell中会有所不同,但您仍然可以使用{{1} }:
$$