Echo

printf over echo 有什麼特別之處

  • May 31, 2016

我發現一個變數的長度如下:

`set num=123456`
`echo $num|wc -c`

它返回輸出為 7(假設返回 6)

我做了同樣的事情printf

`printf "%s" $num|wc -c`

它返回輸出為 6 (如預期的那樣)

計數時是否echo考慮空字元?Printf計數到空字元?

有什麼特別之處printf

看到這一點的最簡單方法是使用類似od -c列印所有字元的東西:

$ echo 123456 | od -c
0000000   1   2   3   4   5   6  \n
0000007
$ printf 123456 | od -c
0000000   1   2   3   4   5   6
0000006

正如你所看到的,echo列印一個額外的\nprintf沒有。wc -c計算字節數,它不關心所討論的字元是否可以被人類看到,它只計算其輸入中的字節數。

printf至於vs有什麼特別之處echo,請參閱此處了解比您想知道的更多詳細資訊。

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