0

我有一个脚本,它将文件名作为 $1 中的输入,并对其进行处理......并创建一个输出文件为 ${1}.output.log,它工作正常。例如,如果我尝试了 ./myscript filename.txt

它将处理并生成名称为:filename.txt.output.log 的输出文件

但是当我尝试替换一个进程来为这个脚本提供输入时,比如 ./myscript <(echo something),它失败了,因为它不能再用 ${1} 创建一个文件。输出日志;因为现在 $1 不是一个实际文件,并且在我的工作目录中不存在脚本应该创建输出。

有什么建议可以解决这个问题吗?

4

1 回答 1

1

问题可能是在使用进程替换时,您试图在 /dev 中创建一个文件,更具体地说,/dev/fd/63.output.log 我建议这样做:

output_file="$( sed 's|/dev/fd/|./process_substitution-|' <<< ${1} ).output.log"
echo "my output" >> "$output_file"

我们使用 sed 将 /dev/fd/ 替换为 ./process_substitution- 以便在当前工作目录 (pwd) 中创建名为 process_substitution-63.output.log 的文件

于 2018-06-27T11:14:55.947 回答