什么更便携? echo -e还是使用printf?

时间:2012-07-17 20:16:55

标签: bash compatibility

我目前正在编写一个bash测试框架,该框架要求尽可能便携。

所以,有一次,我不得不打印一个前导换行符,然后是一些包含几个扩展变量的文本。这是我用过的解决方案。

echo -e "\n$number_of_specs ${units}, $number_of_specs_failed failed"

这似乎没问题,但我不确定与使用例如打印线进行打印相比是多么便携printf

我可以找到一些参考文献的任何想法或提示吗?

2 个答案:

答案 0 :(得分:21)

printf更便携。它应始终优先于echo -e。如果专门定位bash / zsh / ksh,echo $'...'也可以。如果专门定位zsh或ksh,print就可以了。

POSIX(最后一个链接)还讨论了echo -n问题,这也应该避免。基本上,永远不要使用echo的选项,并且为了便携性,请使用printf。)

答案 1 :(得分:1)

对于领先的新行,最便携的(对于没有printf的古代系统的可移植性)显然是

echo
echo "$number_of_specs ${units}, $number_of_specs_failed failed"