2

私はこのスニペットを使用して、変数を1行ずつ読み取ります。

echo "${lines}" | while read line; do something with ${line}; done

lines新しい行と文字の出現が含まれます\(文字列lineとして解釈されCます)。残念ながら、このコードのどこかで\文字が単純に削除されています。なぜ、そしてどうすればそれを修正できますか?

編集:サンプル入力はこれです:

foo $'bar'
fee $'ber\fbir'

文字列を文字列として解釈するために後で使用されるものでは\なく、が削除されることに注意してください。$''C

4

1 に答える 1

1

次のように、キャラクターをエスケープして、\キャラクターがまだあなたの中に存在するようにすることができますread line

echo "${lines}" | sed 's/\\/\\\\/g' | while read line; do something with ${line}; done

更新:いくつかのテストの後、上記のsed行を更新しました。今すぐ試してみてください、それは私のために働いています。

更新2:ヨルダンは私の答えよりも優れたアプローチを使用していた彼の答えを削除したようですので、ここに自分で追加します:

-rコマンドのパラメーターを使用してread、スラッシュをエスケープしないように指示するため、これも機能します。

echo "${lines}" | while read -r line; do something with ${line}; done
于 2012-11-05T16:09:36.660 に答える