2016-12-10 5 views
0
#!/bin/bash 

declare -A keyPair 

while IFS=, read key value; do 
    keyPair[$key]=$value 
done <$2 

while read line; do 
    for char in $line; do 
     decoded=${keyPair[$char]} 
     echo -n "$decoded" 
    done 
done <$1 

Dies ist mein Code oben. Ich versuche Text auszugeben, der aus einer Datei liest und ersetzt Wörter in der Datei, die denen in einem assoziativen Array entsprechen (zB AA: {waste: run}, das Programm wird alle Instanzen von 'waste' durch 'run' ersetzen) . Ich bin daran gebunden, die Ausgabe ohne eine neue Zeile zu wiederholen. Ich nehme an, das funktioniert mit dem Echo -n, aber meine Konsole gibt nichts aus. Allerdings, wenn ich das gleiche Skript mit nur ein Echo ohne -n ​​ausführen, gibt mein Programm folgenden:Bash Echo nicht Drucken

zoo 
garage 
water 
mountain 

run 
father 
zoo 
underwater 
fast 

run 
walk 

foo 
fast 
father 

Ich mag es machen, so dass es wie diese jede Hilfe

zoo garage water mountain 

run father zoo underwater fast 

run walk 

foo fast father 

sieht würde geschätzt werden. Vielen Dank.

+0

Überprüfen Sie Ihr Skript für DOS-Zeilenenden. Siehe http://stackoverflow.com/tags/bash/info. – chepner

+0

Hmm, ich denke, das hat den Trick gemacht. Ich hatte DOS-Zeilenendungen. Vielen Dank. –

Antwort

0

Das Problem stammte von DOS-Zeilenendungen in meinen Eingabe-TXT-Dateien. Das Reparieren der DOS-Zeilenendungen schien alle meine Probleme behoben zu haben.

Weitere Informationen: stackoverflow.com/tags/bash/info