应用程序本身没有问题,我只是想知道周围的 Bash 的行为为何不如我预期,就像无论这个应用程序有什么行为,它都以我无法解释的原因的方式泄漏出去。
就上下文而言,应用程序是patsh,它是为 Nix(如包管理器)准备的,但本质上它需要一些输入文件,并根据一些规则重写它,然后将其保存到输出文件(这里是/dev/stdout
),在这个上下文中,它不会重写任何东西,所以它本质上是cp
。这是设置:
$ cat <<EOF > foo
1
2
3
4
5
6
EOF
$ cat <<EOF > bar
a
b
c
EOF
$ { patsh -f bar /dev/stdout; } >> foo # Using braces to avoid any ambiguity...
$ cat foo # It replaced instead of appending
a
b
c
4
5
6
$ cat <(patsh -f bar /dev/stdout) >> foo # Does what I expected
$ cat foo
a
b
c
4
5
6
a
b
c
有人能解释这种行为吗?