Shell脚本:cat vs echo for output

时间:2011-11-16 01:48:12

标签: bash

我在bash中编写了一个小脚本,它解析所提供的文件或stdin,如果没有给出文件来产生一些输出。将解析后的输出重定向到stdout的最佳方法是什么(在脚本末尾,结果存储在变量中)。我应该使用cat还是echo,还是有其他首选方法?

3 个答案:

答案 0 :(得分:9)

使用printf命令:

printf '%s\n' "$var"

echo对于简单的情况是可以的,但对于某些参数它可能表现得很奇怪。例如,echo有一个-n选项,告诉它不要打印换行符。如果$var恰好是-n,那么

echo "$var"

不会打印任何内容。并且有许多不同版本的echo(内置于各种shell或/bin/echo中),行为略有不同。

答案 1 :(得分:3)

echo是一个很好的方法。如果你想让cat工作,你将不得不跳过几个箍。

答案 2 :(得分:3)

回声。您将解析后的数据放在变量中,因此只需echo "$var"即可。 cat用于打印文件的内容,这不是你想要的。