Bash ANSI C 引用符が改行文字を正しく引用しません。

Bash ANSI C 引用符が改行文字を正しく引用しません。

BashのANSI C引用符は、C(または一重引用符付きのPython)と同じ方法で文字列を読み取る必要があります。

printf $'"Hello, World!\\n"'

#expected output (no newline, the slash is escaped)
"Hello, World!\n"

#actual output (one newline)
"Hello, World!
"

しかし、正しく動作しないようです。これはバグですか?

答え1

あなたはprintfそれを間違って使用しました。予想されるフォーマット文字列を提供し、printfそれに応じて解釈しました\n。正しい書式文字列を使用し、ANSI-C 引用符付き文字列を引数として指定します。

$ printf '%s\n' $'"Hello, World!\\n"'
"Hello, World!\n"

または、書式文字列内のパラメータがどこにあるかをより明確に表示するには、次の手順を実行します。

$ printf '|%s|\n' $'"Hello, World!\\n"'
|"Hello, World!\n"|

関連情報