2016-12-10 4 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}, 프로그램은 'waste'의 모든 인스턴스를 'run'으로 대체합니다) . 나는 새로운 라인없이 출력을 에코로 묶고 싶다. 나는 echo -n과 함께 작동한다고 가정하지만 콘솔은 아무것도 출력하지 않습니다. 내가 -n없이 단지 에코와 같은 스크립트를 실행하지만, 내 프로그램은 출력 다음Bash 에코가 인쇄되지 않음

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

이 문제는 입력 된 txt 파일에 DOS 줄 끝이 있음을 나타냅니다. 도스 라인 결말을 고쳐 모든 내 문제를 해결 보였다.