Text-Processing由
由echo
產生的換行符,在不使用任何選項時是否總是存在,無論shell如何?
儘管我已經閱讀了Stephane的答案,基本上集中在
echo
vs的所有方面printf
,但我不確定它是否也回答了我的問題,即:產生的換行符
echo
,在幾乎所有系統上都沒有使用任何選項的情況下總是存在嗎?:我有一個 POSIX 腳本,其中相關部分是:
printf '\n'; printf '\n' >&2
我問自己,
printf
在這種情況下我也需要堅持嗎?它可能看起來更好:
echo; echo >&2
但我不是專家,所以我不確定。
由 , 產生的換行符
echo
是否在幾乎所有系統上都沒有使用任何選項而始終存在?我不知道它是否確實總是存在於所有系統上,但它應該存在於所有 POSIX 派生系統上。根據規範
描述
該
echo
實用程序將其參數寫入標準輸出,後跟 <newline>。如果沒有參數,則只寫入 <newline>。然後
實現不應支持任何選項。
雖然某些實現確實支持很少的選項,但在沒有選項的情況下,它們應該回退到 POSIX。所以是的,他們應該產生一個換行符。
理論上,如果你害怕
echo
不服從,你還不如害怕printf
不服從。實際上,在嘗試編寫健壯的程式碼時,無論如何我寧願相信它,因為它通常是正確的工具,並且在某些極端情況下放棄它是沒有意義的(請參閱此答案printf
中的“超越簡單情況”以理解我的意思)。