ファイル名に^ Mを追加するBashスクリプト


4

bashスクリプトの1つで、echo出力リダイレクトを繰り返し使用してファイルに追加することにより、ファイルを作成しています。ただし、結果のファイルには適切な名前が付けられませんが、常に^M末尾に印刷できない文字が追加されます。誰かが私が間違っていることを知っていますか?次の簡単なスクリプトは問題を示しています。

#!/bin/bash
# Should create 'concat.txt' instead creates 'concat.txt^M'
outfile="concat.txt"
echo "'"$outfile"'"
for item in "Able" "Baker" "Charlie"; do
    echo $item >> $outfile
done

システム:Ubuntu 9.04(x64)

回答:


12

DOSスタイルの行末を追加したファイルをどこかで編集したと思われます。ファイルを実行してdos2unix、それらを取り除きます。

dos2unix yourscriptfile

Windowsの行末を確認するには、実行してcat -vt file.extを探します^M
ケン14年

4

^M ファイルが最初にDOSモードで書き込まれたときに行末をUNIXモードに設定すると、行末がすべての行の終わりに表示されます \r\n

だから、あなたが見ている間

echo $item >> $outfile

unixの見方:

echo $item >> $outfile^M

最初、

:set ff=unix

次に:

:%s/\r//

^ Mを削除するには

編集

なんらかの愚かな理由で、私はあなたがvimを使用していると思いました。たぶん、それが\rasを表示するのを見た唯一のエディターだから^Mです。とにかく、デニス・ウィリアムソンが言ったように、dos2unixツールを使用してください。



申し訳ありませんああ、私は彼がVIを使用しています想定し、いくつかの愚かな理由のために
HASEN
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.