![]() |
1
5
在这里使用临时文件是正确的解决方案。当您使用像“>”这样的重定向时,它由shell处理,无论您的管道中有多少命令,shell都可以在执行任何命令之前(在管道设置期间)自由删除和覆盖输出文件。 |
![]() |
2
4
你在找 sponge . |
![]() |
3
3
像许多其他人一样,我喜欢使用临时文件。我使用shell进程id作为临时名称的一部分,这样如果脚本的多个副本同时运行,它们就不会发生冲突。最后,我只在脚本成功时覆盖原始文件(使用布尔运算符短路-它有点密集,但对于简单的命令行来说非常好)。把这些放在一起,看起来像:
如果命令失败,这将留下临时文件。如果你想清理错误,你可以把它改成:
顺便说一句,我去掉了cat的糟糕用法,用输入重定向代替了它。 |
![]() |
4
2
使用
|
![]() |
5
1
使用临时文件比尝试缓冲管道中的数据要好。 这几乎违背了管道缓冲它们的目的。 |
![]() |
6
1
回应
the OP's question above
关于使用
支票
要在shell脚本中使用它,请更改
注意,不像真的
|
![]() |
7
1
我认为最好的方法是使用临时文件。但是,如果你想要另一种方法,你可以使用类似的方法。
如果你愿意,你可以把它折叠成11个衬垫:
尽管如此,我还是建议使用一个临时文件作为输出,然后用它覆盖原始文件。 |
![]() |
8
0
我想你需要用
|
![]() |
Plankt0n · Shell,执行一个需要逐一遍历多个值的命令 5 月前 |
![]() |
Fin · 如何使用bash从表中提取数据 5 月前 |
![]() |
aenagy · Bash声明不喜欢带空格的值 6 月前 |
![]() |
PkDrew · AND运算符“&”在“&tee”中的作用是什么? 6 月前 |
![]() |
elbarna · 正则表达式仅排除小写字符串,但保存包含大写的字符串 6 月前 |
![]() |
Harry · 使用“$!”获取后台作业的pid 6 月前 |
![]() |
nmr · 使用来自另一个shell脚本的if语句的返回码函数 6 月前 |
![]() |
minseong · Git sed忽略二进制文件 9 月前 |
![]() |
Jesper.Lindberg · 检查参数是否包含null 10 月前 |