AIX上でシェルで文字列結合すると、文字列が上書きされてしまった

AIXでシェルで単に文字列結合して、標準出力したら、結合されずに上書きされてしまった。

やったこと↓

ファイルから読み取った文字列str1(12345)に、文字列ABCDを結合するので、結果は当然「12345ABCD」となるはず。。。

しかし、実際に動かしてみると、「ABCD5」となり、文字列が結合されず、str1に対して、str2が上書きされる結果となった。

最初はさっぱりわからなかったが、結局はstr1の末尾にCR(キャリッジリターン)が含まれていたからであった。

str1を読み取るファイルの改行コードがCRLFなっていたが、AIXの改行コードはLFのため、文字列を読み取った際に「12345」ではなく「12345<CR>」となっていたのである。CR(キャリッジリターン)はつまり、”カーソルを先頭に戻して”を意味するため、後続の文字列str2(ABCD)は一旦カーソルを先頭に戻した上で、結合されていたのであった。。。

わかってしまえば、大したことではないが一瞬何が起きてるのかさっぱりだった。改行コードはとても大事。