我在bash中编写了一个小脚本,它解析所提供的文件或stdin,如果没有给出文件来产生一些输出。将解析后的输出重定向到stdout的最佳方法是什么(在脚本末尾,结果存储在变量中)。我应该使用cat
还是echo
,还是有其他首选方法?
答案 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用于打印文件的内容,这不是你想要的。