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 

это мой код выше. Я пытаюсь вывести текст, который читается из файла, и заменяет слова в файле, соответствующие тем, которые содержатся в ассоциативном массиве (например, AA: {waste: run}, программа заменит все экземпляры «отходов» на «run») , Я привязываюсь к эхо вывода без новой строки. Я предполагаю, что это работает с echo -n, однако моя консоль ничего не выводит. Однако, если я запустить тот же сценарий с только эхо без -n, моя программа выводит следующее:Bash Echo Not Printing

zoo 
garage 
water 
mountain 

run 
father 
zoo 
underwater 
fast 

run 
walk 

foo 
fast 
father 

Я хотел бы сделать это так, что он выглядит как этот

zoo garage water mountain 

run father zoo underwater fast 

run walk 

foo fast father 

Любая помощь быть оцененным. Большое спасибо.

+0

Проверьте свой сценарий для окончаний строк DOS. См. Http://stackoverflow.com/tags/bash/info. – chepner

+0

Хм, я думаю, что сделал трюк. У меня закончились линии DOS. Спасибо. –

ответ

0

Проблема связана с окончанием строк DOS в моих входных txt-файлах. Фиксация окончаний строк DOS, похоже, устранила все мои проблемы.

Дополнительная информация: stackoverflow.com/tags/bash/info