2017-01-14 7 views
-3

Ich habe versucht, ein Programm zu schreiben, die alle Eingaben aus einer anderen Datei-Test genannt lesen resümieren kannlesen Eingaben aus einer Datei linux/bash

mein Programm Summe:

#!/bin/bash 
sum=0 
for n; do 
sum=$(($sum + $n) 
done 
echo $sum 

und meine Testdatei Test .in:

1 
2 
3 

jedoch nach

./sum < test.in 
Eingabe

Nichts wurde angezeigt.

Wie sollte ich meinen Code reparieren?

Dank

+3

Sie haben zwei Antworten bekommen [hier] (https://unix.stackexchange.com/quest ionen/337424/redirect-input-from-a-file-to-a-program). Hast du sie gelesen? Duplizieren Sie keine Fragen, es ist eine schlechte Übung. – sorontar

+0

können Sie bestätigen, dass das Skript tatsächlich ausgeführt wird, indem Sie Ihrer Ausgabe ein "Label" hinzufügen, d. H. "Echo" sum = $ sum "'. ABER wo haben Sie den Code, der Eingaben von Ihrer Datei liest? Hier finden Sie Beispiele für 'while read line [linux] '. Viel Glück. – shellter

+2

Voting zum Schließen, da dies ein Duplikat Ihres Q auf http: unix.stackexchange.com ist. Danke an @sorontar für das Aufzeigen! Viel Glück für jeden. – shellter

Antwort

1

Um jede Zeile von test.in, umschreiben das Skript zu lesen jede Zeile zu lesen:

#!/bin/bash 
sum=0 
while read n; do 
    sum=$(($sum + $n)) 
done 
echo $sum 
1

Wenn Sie Sie in einer Art und Weise zu tun, andere dann rein bash, offen sind kann versuchen, in awk:

awk '{s+=$1} END {print s}' < test.in