为什么“echo”在 bash 5.1.12 中默认为“echo -e”?

问题描述 投票:0回答:1

我在

echo
上偶然发现了一个奇怪的问题
GNU bash, version 5.1.12(1)-release (x86_64-pc-solaris2.11)

bash-5.1$ builtin echo -e 'a\tb'
a       b

bash-5.1$ builtin echo 'a\tb'
a       b

bash-5.1$ builtin echo +e 'a\tb'
+e a    b

虽然它不会影响我的脚本,因为我倾向于使用

printf
你怎么关闭
echo -e


not a dup(我认为):问题不在于

echo
在任意 shell 中的行为,而是具体在
bash
中的行为。

bash echo
1个回答
1
投票

您启用了

xpg_echo
shell 选项。

通过运行列出选项

shopt

shopt -u xpg_echo

禁用它

要解决这个问题,请阅读

man builtins
的回显部分(假设它为您提供了 bash 内置命令,否则请查看 https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins。 html)

相关部分是

xpg_echo shell 选项可用于动态确定是否 or not echo 默认扩展这些转义字符。

© www.soinside.com 2019 - 2024. All rights reserved.