考虑2个json文件:
fileA.json
:
{
"foo": "hey",
"bar": "ola"
}
fileB.json
:
{
"foo": "hoy"
}
,执行:
% cat fileA.json fileB.json | json
返回
{
"foo": "hoy",
"bar": "ola"
}
确定
-
现在为什么在将stdout重定向到fileB.json
时,我得到了:
% cat fileA.json fileB.json | json > fileB.json
我明白了:
{
"foo": "hey",
"bar": "ola"
}
即:fileA.json
???
PS:json
实用程序位于:http://trentm.com/json
答案 0 :(得分:3)
shell设置输出重定向> fileB.json
,因此它会在fileB.json
开始读取之前打开并截断cat
。这会导致cat
读取空文件。 (它甚至可能最终读取部分写入的输出数据。)
永远不要读取和写入管道中的同一文件。请尝试使用> fileC.json
之类的内容。