在 bash 中,在这种特定情况下,echo 的行为如下:
$ bash -c 'echo "a\nb"'
a\nb
但在 zsh 中,同样的事情结果却截然不同......:
$ zsh -c 'echo "a\nb"'
a
b
和鱼,因为我很好奇:
$ fish -c 'echo "a\nb"'
a\nb
我确实意识到我可以运行:
$ zsh -c 'echo -E "a\nb"'
a\nb
但现在我担心我会在这样的基本操作中遇到更多问题。 (因此,我对 Fish 的调查是:如果我必须在 zsh 的如此低的级别上进行更改,为什么不完全改变并切换到明显不同的东西呢?)
我自己没有找到任何文档来帮助澄清 bash 与 zsh 中的 echo 差异或直接列出差异的页面,所以这里有人可以列出它们吗?也许可以指导我在进行转换时遇到更广泛的潜在影响的陷阱,这将涵盖这种情况?
通常更喜欢printf
以获得一致的结果。
如果您需要可预测的一致echo
实现,您可以用自己的函数覆盖它。
无论 shell 是什么,这都会表现相同。
echo(){ printf %s\\n "$*";}
echo "a\nb"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)