Bash、导出、用于简单命令串联的“-n”会删除“-n”

Bash、导出、用于简单命令串联的“-n”会删除“-n”

我没有找到这个答案,而且它必须是显而易见的,但我仍然需要帮助。

在尝试创建命令行选项时,我使用了各种标志并回显它们以验证它们是否正确。

然而,这个例子仍然失败:

declare foo="-n 40 "
echo $foo

运行时它只显示“40”。

如果我在前面再加一个破折号-n,它打印--n反斜杠/转义符?它打印了这一点。简而言之,我不明白到底是怎么回事才能让这个简单的文本正确显示。我什至尝试过使用--(停止处理)无济于事。

因此,如果可能的话,请指出文档中的位置并解释为什么它会解释这一点-n这样我就可以学会在未来不这样做,并解决它。

谢谢。

答案1

bashecho内置函数解释-n为自身的参数(如help echo或中所述man bash)。

-n 不附加换行符

其他一些echo实现也做同样的事情。

代替使用printf

printf '%s\n' "$foo"

相关内容