近些天翻阅 O'Reilly 的 Learning the Bash Shell 的时候,偶然发现书中的 echo 命令输出和我的机器上的不一样,于是兴致盎然的仔细读了一下 echo 的 man page 发现了这样一句话:
NOTE: your shell may have its own version of echo, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.
I am surprised to learn (again) that 'sh' today means the PWB shell
and its sequelae. I keep hoping we'd left that behind long ago.
Shocking to think that Unix 7th edition is too modern for today's computers. I give up.
于是我又分别查看了 printf, bash, sh 的 man page 以验证这种说法。当然 printf 也存在不同版本 shell 的区别,但区别很小。我的机器上使用 dash 和 bash,bash 仅比 dash 多了两个选项,而且是两个无关紧要的选项,几乎所有的 format 都是完全相同的,所以就可以用 printf 输出特定格式的字符串,而且是使用 shell buildin,不牺牲程序效率。