2012-04-09 17 views
5
#!/bin/bash 
./program <input.txt> output.txt 

> output.txt część jest ignorowany tak output.txt kończy się pusta.Jak przekierować standardowe wejście i wyjście z Basha

Działa to dla komendy sort, więc spodziewałem się, że będę także pracował dla innych programów.

Jakiś powód, dla którego to nie działa? Jak powinienem to osiągnąć?

+2

Być może wyjście z ./program ma błędu standardowego? Wypróbuj '2> output.txt' – Richante

+0

@Richante LOL, który jest dziwny, ale teraz działa (dlaczego piszesz odpowiedź w komentarzu?) Dzięki – Inuart

Odpowiedz

6

Najbardziej prawdopodobnym wyjaśnieniem jest to, że dane wyjściowe, które widzisz, pochodzą z stderr, a nie stdout. Aby przekierować oboje do pliku, wykonaj następujące czynności:

./program <input.txt> output.txt 2>&1 

lub

./program < input.txt &> output.txt 
+0

Jak zrobiłbyś coś takiego jak' ./program output.txt'? – grinch

Powiązane problemy