Text-Processing

echo產生的換行符,在不使用任何選項時是否總是存在,無論shell如何?

  • April 21, 2019

儘管我已經閱讀了Stephane答案,基本上集中在echovs的所有方面printf,但我不確定它是否也回答了我的問題,即:

產生的換行符echo,在幾乎所有系統上都沒有使用任何選項的情況下總是存在嗎?:

我有一個 POSIX 腳本,其中相關部分是:

printf '\n'; printf '\n' >&2

我問自己,printf在這種情況下我也需要堅持嗎?

它可能看起來更好:

echo; echo >&2

但我不是專家,所以我不確定。

由 , 產生的換行符echo是否在幾乎所有系統上都沒有使用任何選項而始終存在?

我不知道它是否確實總是存在於所有系統上,但它應該存在於所有 POSIX 派生系統上。根據規範

描述

echo實用程序將其參數寫入標準輸出,後跟 <newline>。如果沒有參數,則只寫入 <newline>。

然後

實現不應支持任何選項。

雖然某些實現確實支持很少的選項,但在沒有選項的情況下,它們應該回退到 POSIX。所以是的,他們應該產生一個換行符。

理論上,如果你害怕echo不服從,你還不如害怕printf不服從。實際上,在嘗試編寫健壯的程式碼時,無論如何我寧願相信它,因為它通常是正確的工具,並且在某些極端情況下放棄它是沒有意義的(請參閱此答案printf中的“超越簡單情況”以理解我的意思)。

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