1. ホーム
  2. linux

IFSを改行で分割する設定にする場合、なぜバックスペースを入れる必要があるのですか?

2023-10-06 03:52:31

質問

このように改行で分割するようにIFSを設定する場合、なぜバックスペースが必要なのかが気になります。

IFS=$(echo -en "\n\b")

なぜ、代わりにこれ(動かない)を使ってはいけないのでしょうか?

IFS=$(echo -en "\n")

私は、Unix の改行でファイルを保存している Linux システム上にいます。 私は改行付きのファイルを hex に変換しましたが、それは間違いなく改行文字として "0a" しか使用しません。

私はたくさんググりましたが、多くのページが改行の後にバックスペースを使用するソリューションを文書化しているものの、私が見つけたどれも、なぜバックスペースが必要なのかを説明していません。

-David.

どのように解決するのですか?

なぜなら、bashのマニュアルにあるように コマンド置換 :

Bash は command を実行し、コマンド置換をコマンドの標準出力に置き換え、末尾の改行を削除することで展開を行います。

そのため \b が削除されるのを防ぐことができます。 \n .

よりすっきりした方法としては $'' を引用することで、このようになります。

IFS=$'\n'