2016-12-10 10 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の行末があることが原因です。 DOSの行末を修正することで、すべての問題が修正されたようです。

続きを読む:stackoverflow.com/tags/bash/info

関連する問題