Considerando 2 file json:
fileA.json
:
{
"foo": "hey",
"bar": "ola"
}
fileB.json
:
{
"foo": "hoy"
}
, eseguendo:
% cat fileA.json fileB.json | json
ritorna
{
"foo": "hoy",
"bar": "ola"
}
Ok
--
Ora perché quando si reindirizza lo stdout a fileB.json
Ottengo:
% cat fileA.json fileB.json | json > fileB.json
Ottengo:
{
"foo": "hey",
"bar": "ola"
}
Vale a dire: fileA.json
???
PS: json
l'utilità è qui: http://trentm.com/json
risposte:
3 per risposta № 1La shell imposta il reindirizzamento dell'output, > fileB.json
, così si apre e tronca fileB.json
prima cat
ha iniziato a leggerne. Questo causa cat
leggere un file vuoto. (Potrebbe persino finire per leggere i dati di output parzialmente scritti).
Non leggere mai e scrivere sullo stesso file in una pipeline. Prova qualcosa del genere > fileC.json
anziché.