Bashで改行を使用しようとしています。 ANSI C引用符(例:$ '\ n')が必要であることがわかりましたが、通常この方法は私には適していません。だから私は何が間違っているのだろうか。
# This works
>> echo $'a\nb\nc'
a
b
c
# This doesn't
>> A=$'a\nb\nc'
>> echo $A
a b c
# Also, this does not work
>> A="a b c"
>> echo ${A// /$'\n'}
a b c
改行の代わりにタブを使用すると、同じ問題が発生します。他のANSI C参照は\'、\"、さらには\bのように動作します。
GNUスマッシュバージョン:4.3.11(1)
ベストアンサー1
以下では変数を参照しないからです。
echo $A
分割とワイルドカードが発生しやすいです。最初のステップは、変数の内容を拡張することです。
echo a $'\n' b $'\n' c
- ここで、$'\n'
ビットは実際の改行文字を表します。
その後、個々の部分が$ IFSに分割され、次の結果が得られます。
echo a b c
その後、追加のファイル名を生成するワイルドカードがないので、文字列がecho
。
参照変数を使用すると、echo "$A"
分割とワイルドカードを抑制できます。
IFS を変更する場合は、変更内容を直接確認してください。
oIFS=$IFS
IFS=
echo $A
IFS=$oIFS