Shell脚本:cat vs echo for output

Exp*_*lls 7 bash

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

Kei*_*son 10

使用printf命令:

printf '%s\n' "$var"
Run Code Online (Sandbox Code Playgroud)

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

echo "$var"
Run Code Online (Sandbox Code Playgroud)

不会打印任何东西.并且有许多不同的版本echo(无论是内置于各种shell还是as /bin/echo),具有微妙的不同行为.