追加読書

追加読書
$ printf "hi"
hi$ printf "hi\n"
hi
$ printf "hi\\n"
hi

最後の行が印刷されないのはなぜですかhi\n

ベストアンサー1

関係はありませんが、printfすべてに関連しています。あなたがする主張printf

二重引用符で囲まれた文字列では、シェルはに\\なります\。したがって、ユーザーが提供する引数はもちろんprintf実行されます。hi\nprintfそれエスケープシーケンス処理がオンになっています。

二重引用符で囲まれた文字列では、シェルによる\エスケープは特に␊、、、および文字にのみ影響するように\制限`され$ています"。あなたはそれがそのまま渡されることがわかります\nprintfだからあなたがやっている主張はprintf実際にhi\n 再び

フォーマット文字列にエスケープシーケンスを入れるときは注意してくださいprintf一部のみで定義された意味シングル Unix 仕様。たとえば、定義され\nていますが、実際には定義されていません。\c

追加読書

おすすめ記事