在 bash 脚本中;当您多次打开它时,作为文件名参数的进程标准输出失败

Mos*_*ari 1 bash file-descriptors stdout

考虑这个 bash 脚本代码:

#!/bin/bash

function bug_part() {
    cat $1 > sample.first
    cat $1 > sample.second #second time you open file $1, it contains no data
}

bug_part <(echo "TEST")
[ "$(cat sample.first)" != "$(cat sample.second)" ] && echo "THIS IS A BUG" 1>&2 && exit 1
rm sample.first sample.second
Run Code Online (Sandbox Code Playgroud)

你同意我说这个问题是 bash 错误吗?还是Linux错误?

有没有人确切知道背后发生了什么?

yae*_*shi 5

我不认为这是一个错误。您只能读取/写入连接到由进程替换准备的命令的命名管道一次。