Domanda
Ho la seguente dichiarazione
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done
ma mantiene scrivendo tutto l'output alla console non il file 'out.asc'. plz potete aiutarmi per reindirizzare l'output di file piuttosto che sullo schermo. grazie in anticipo!
Soluzione
Potrebbe essere che il vino sta scrivendo a stderr, quindi è necessario reindirizzare che:
for i in `cat i.txt`; do wine ~/run.exe $i.asc 2>> out.asc; done
Avviso 2 nella parte dell'operatore 2>>
, questo significa STDERR.
Altri suggerimenti
prova con il reindirizzamento stderr (2) a stdout (1)
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>&1; done
Forse avete sia un output standard e Erro uscite. Usa >>
e 2>>
di reindirizzare sia flusso di output per il file.
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> out.asc; done
Si potrebbe fonti opzionalmente reindirizzamento a diversi file:
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> err.asc; done
Altri hanno risposto alla tua domanda attuale, mi piacerebbe mostrare un idioma meglio leggere le righe di un file.
Al posto di
for i in `cat i.txt`; do
: do something with $i
done
Prova
while IFS= read -r line; do
: do something with "$i"
done < i.txt