gpt4 book ai didi

Bash:缓冲整个标准输入,然后输出

转载 作者:行者123 更新时间:2023-11-29 09:26:06 24 4
gpt4 key购买 nike

我需要使用不支持它的程序 prog 修改文件就地

prog $file > $file.temp
cat $file.temp > $file
rm $file.temp

我想一步完成,没有临时文件。这看起来不错,但行不通:

cat <(prog $1) > $1

如果我有一种缓冲管道内容的方法(阻塞直到写端关闭),它起作用,例如:

cat <(prog $1 | buffer_until_close) > $1

我该如何做到这一点,或者以其他方式实现所需的语法?

最佳答案

It would work if I had a way of buffering the contents of a pipe (blocking until the write end closes), eg:

cat <(prog $1 | buffer_until_close) > $1

不,不会。 stdout的重定向( >$1 ) 任何程序启动之前执行。一旦 shell 设置了重定向,它就会截断输出文件。

但是,如评论中所述,sponge将工作:

prog $1 | sponge $1

spongemoreutils 中找到包,大多数 Linux 发行版都会预装它。

关于Bash:缓冲整个标准输入,然后输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com