[英]Difference between printf and echo in Bash
$ printf 'apple' | wc -m
5
$ echo 'apple' | wc -m
6
為什么printf可打印5個字符,而echo可打印6個字符?
bash
手冊頁中第一條echo
的輸入句子(強調我的意思):
輸出args,以空格分隔, 后跟換行符 。
printf
手冊頁條目的第一句:
在格式的控制下,將格式化的參數寫入標准輸出。
printf
只打印格式顯示的內容; 它不附加隱含的換行符。
echo "foo"
和printf "foo"
之間可能還有其他區別,具體取決於foo
是什么。 POSIX規范在實現echo
為實現提供了廣泛的自由裁量權,可能是避免從各種歷史實現中選擇一種作為標准。 當您依靠精確的輸出時,請使用printf
。
這是區別..
$printf 'abcd'
abcd$ echo 'abcd'
abcd
$
如您所見,其他字符是換行符\\n
Echo命令在字符串的末尾添加“ \\ n”字符。 也就是說,當我們使用echo命令打印內容時,它會自動傳遞到新行。 但是printf不會這樣做。
回顯“ string”等於“ string \\ n”,並打印“ string”等於“ string” 。
因此,“ wc -m”命令的輸出是不同的。
在執行命令后,Printf不提供新行,但在執行命令后,echo提供新的行。 請參閱以下代碼輸出。
使用Printf:
a = 0
而[$ a -lt 10]執行printf $ aa = expr $a + 1
完成
o / p:0123456789
回聲的使用:
a = 0
而[$ a -lt 10]做echo $ aa = expr $a + 1
done
o / p: 它將以列方式打印,因為此窗口不以列方式打印,請嘗試執行此代碼,它將更好地理解。
0 1 2 3 4 5 6 7 8 9
您可以通過給出以下命令echo -n $ a來刪除echo中的新行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.