2017-04-01 3 views
0

Ich habe ein Bash-Skriptin nächste Zeile aus der Datei lesen jeden Anruf

for ((i=0; i < 2500; i++)); do 
    ./program.bin <in>> out 
done 

ich von der nächsten Zeile dies jedes Mal, ich rufe lesen möchten. Zum Beispiel ist dies mein in

1024 2048 3096 

1045 8754 5412 

5648 5457 5646 

EOF 

So das erste Mal durch die Schleife des Programm wird 1024 2048 3096 als Eingaben einreichen. Das zweite Mal durch es bekommt 1045 8754 5412 und so weiter. Ich habe ein Gefühl wie ich es eingerichtet habe jetzt liest es immer nur die erste Zeile ein. Wie löse ich dieses Problem?

Antwort

0

diesen Versuchen Sie stattdessen:

while IFS= read -r line 
do 
    ./program.bin <<<"$line" >> out 
done < in 

Dies wird die in Datei Zeile für Zeile und für jeden Zeilenaufruf ./program.bin, geben Sie den Wert lesen lesen (innen Variable line gefunden) und auf der Standardeingabe in der Versorgung Programm.

Natürlich könnte das Programm selbst in der Lage sein, mehrzeilige Eingaben zu verarbeiten, wenn Sie dieses Programm programmieren.

Verwandte Themen