在“Greg's Wiki”上的Bash Pitfalls中,我发现了以下引用:
事实上,
echo这里使用该命令并不能绝对安全。-n例如,如果变量包含,echo将认为是一个选项,而不是要打印的数据。打印变量值的唯一绝对可靠的方法是使用printf:Run Code Online (Sandbox Code Playgroud)printf "%s\n" "$foo"
但是当我输入:
var="-n Hello"
echo "$var"
Run Code Online (Sandbox Code Playgroud)
它工作正常并且不会解释-n为一个选项,所以我不明白为什么我引用的消息来源说我们需要使用它printf才能绝对安全?