Bash

為什麼 printf 不轉義換行符?

  • February 1, 2020
$ printf "hi"
hi$ printf "hi\n"
hi
$ printf "hi\\n"
hi

為什麼最後一行不列印hi\n

這與你所給予的論點無關printf,而與一切有關。printf

在雙引號字元串中,shell\\變成\. 因此,您給出的參數printf實際上是hi\n,然後它當然printf會執行自己的轉義序列處理。

在雙引號字元串中,\shell 完成的轉義特別限於影響 ␊、\、```、$"字元。您會發現它按原樣\n傳遞。printf所以你給出的論點printf實際上hi\n 是。

小心將轉義序列放入printf. 只有一些在**Single Unix Specification中有定義的含義。 \n例如,已定義,但\c實際上並未定義。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/564998