вывод bash в файл - PullRequest
       9

вывод bash в файл

3 голосов
/ 28 апреля 2011

У меня есть следующий оператор

 for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done

, но он продолжает записывать весь вывод в консоль, а не в файл 'out.asc'.Пожалуйста, помогите мне перенаправить вывод в файл, а не на экран.заранее спасибо!

Ответы [ 4 ]

4 голосов
/ 28 апреля 2011

попробуйте перенаправить stderr (2) в stdout (1)

for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>&1; done
4 голосов
/ 28 апреля 2011

Возможно, что wine пишет в stderr, поэтому вам нужно перенаправить:

for i in `cat i.txt`; do wine ~/run.exe $i.asc 2>> out.asc; done

Обратите внимание на 2 в операторе 2>>, это означает, что stderr.

0 голосов
/ 28 апреля 2011

Другие ответили на ваш настоящий вопрос, я хотел бы показать лучшую идиому для чтения строк файла.

Вместо

for i in `cat i.txt`; do
  : do something with $i
done

Попробуйте

while IFS= read -r line; do
  : do something with "$i"
done < i.txt
0 голосов
/ 28 апреля 2011

Возможно, у вас есть как стандартный выход, так и выходы с ошибками. Используйте >> и 2>>, чтобы перенаправить оба выходных потока в ваш файл.

for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> out.asc; done

При желании вы можете перенаправить источники в разные файлы:

for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> err.asc; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...