簡體   English   中英

Bash中printf和echo的區別

[英]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:

!/ bin / sh

a = 0

而[$ a -lt 10]執行printf $ aa = expr $a + 1完成

o / p:0123456789

回聲的使用:

!/ bin / sh

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM