シェルスクリプトでは、行末にテキストを追加することはできません。

シェルスクリプトでは、行末にテキストを追加することはできません。

ファイルから行を読み、文字列を追加したいと思います。ところがちゃんと付いていませんね。

#! /bin/bash

FILE=$1
while IFS= read -r line
do
    line2="${line} &"
    echo $line2
done <$FILE

私の入力ファイルには以下が含まれています。

message
sample
text

期待される出力

message &
sample &
text &

ただし、スクリプトを実行すると、次のような結果が表示されます。

 &ssage
 &mple
 &xt

最後に文字列を追加しないのはなぜですか?

ベストアンサー1

 &ssage
 &mple
 &xt

問題は、入力ファイル(明らかにWindowsで生成された)にCRLF行の終わりがあることです。

修正するsed -i 's/\r//' file

おすすめ記事