GNU/Linux >> Linux の 問題 >  >> Linux

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

コマンド置換に関してbashマニュアルが述べているように:

<ブロック引用>

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

\b を追加することで \n の削除を阻止します .

これを行うためのよりクリーンな方法は、 $'' を使用することです 次のように引用します:

IFS=$'\n'

最も簡単な方法を思い出しました。debian wheezy の bash でテスト済みです。

IFS="
"

冗談じゃない:)


echo を使用しているためハックです コマンド置換。

prompt> x=$(echo -en "\n")
prompt> echo ${#x}
0
prompt> x=$(echo -en "\n\b")
prompt> echo ${#x}
2

$() 末尾の改行と \b を取り除きます \n を防ぎます テキストに表示される可能性はほとんどありませんが、末尾の改行になることはありません。 IFS=$'\n' 改行で分割するように IFS を設定するより良い方法です。


Linux
  1. Bashで合法的なコマンドの前に変数を設定するのはなぜですか?

  2. エコーコマンドでフォントを変更しますか?

  3. Linuxエコーコマンド

  1. 猫の出力を変数に保存すると、すべての改行が削除されます

  2. sudo:bundle コマンドが見つからないのはなぜですか?

  3. bashで(コマンド引数のように)引用符で文字列を分割する方法は?

  1. 二重引用符はいつ必要ですか?

  2. PrintfがEchoよりも優れているのはなぜですか?

  3. コマンドがパイプされたときに slabtop -o が最初の 23 行しか返さないのはなぜですか?