Bash
為什麼 printf 不轉義換行符?
$ 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
實際上並未定義。進一步閱讀