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!

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top