#!/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.
Überprüfen Sie Ihr Skript für DOS-Zeilenenden. Siehe http://stackoverflow.com/tags/bash/info. – chepner
Hmm, ich denke, das hat den Trick gemacht. Ich hatte DOS-Zeilenendungen. Vielen Dank. –