2016-08-22 2 views
0

Dies ist meine erste stackoverflow Frage, in Bezug auf bash Scripting. Ich bin ein Anfänger in dieser Sprache, also sei nett mit mir.Vergleichen zwei Sätze von Variablen Zeile für Zeile in Unix, Code nur die letzte Zeile ausgedruckt

Ich versuche, ein Vergleichsskript zu schreiben. Ich habe versucht, alle Ausgaben in Variablen zu speichern, aber nur die letzte wird gespeichert.

Beispielcode:

me:1234567 

you:2345678 

us:3456789 

Mein Code:

#!bin/bash 

while read -r forName forNumber 

do 

    aName="$forName" 

    echo "$aName" 

    aNumber="$forNumber" 

    echo "$aNumber" 

done < "exampleCodeFile.txt" 

echo "$aNumber" 

Zum ersten Mal wird alles in Ordnung ausgedruckt werden. Das zweite Echo wird jedoch nur "3456789" ausdrucken, aber nicht alle Zahlen. Gleiches mit $ aName. Dies ist ein Problem, weil ich eine andere Datei haben, die ich eine Reihe von Zahlen gespeichert $ aNumber mit, mit der gleichen Methode oben aufgeführten zu vergleichen, $ aMatcher genannt, bestehend aus:

aMatcher:

1234567 

2345678 

3456789 

So wenn ich versuche, einen Vergleich auszuführen:

if [ "$aNumber" == "$aMatcher" ]; then 

echo "match found!" 

fi 

Erwarteten Ausgang (mit bash -x "skript"):

'['1234567 == 1234567']' 

echo "match found!" 

tatsächlicher Ausgang (mit bash -x „skript“):

'['3456789 == 3456789']' 

echo "match found!" 

Natürlich meinem aktuellen Problem lösen wünschen würde mein Endprodukt will die Spiele aller aufzuzählen, aber ich vor alles anderes versuchen. Vielen Dank!

+1

Gute Frage. Sie können es besser lesbar machen, indem Sie den Code als "Code" anstatt als Blockzitat formatieren. – threeve

+1

.... Verwenden Sie das Formatierungswerkzeug '{}' oben links im Bearbeitungsfeld für markierten Text, um es als Code/Daten/Ausgabe zu formatieren. Viel Glück. – shellter

Antwort

1

Beschreibung Wenn Sie Ihren folgenden Code

aNumber="$forNumber" 

Sie sind überschreibt die Variable $aNumber für jede Zeile der Datei exampleCodeFile.txt nicht anhängen.

Wenn Sie wirklich die Werte wollen angehängt werden, die obige Zeile zu

ändern
aNumber="$aNumber $forNumber" 

Und während mit $aMatcher passend, Sie wieder verwenden, müssen/while-Schleife in $aNumber durch jeden Wert zu durchlaufen und $aMatcher.

+0

Ich habe Ihre Methode versucht, aber es speichert alles als eine einzige Variable. Gibt es eine Möglichkeit, sie einzeln durchzugehen? Ich habe versucht, es als Array zu verwenden, aber es hat nicht funktioniert:/ – bekon

+0

Verwenden Array sollte funktionieren! Veröffentlichen Sie den Code, den Sie mit Arrays versucht haben, damit Sie Hilfe von den Mitgliedern erhalten können. – Fazlin

Verwandte Themen