为什么'\ t',从“反引号”调用返回,扩展到制表机?所有角色都扩展了什么?

时间:2013-10-07 00:14:43

标签: perl bash

如果我像这样运行一个简单的perl脚本(在linux上,使用bash),

$to_run = q(echo '\t');
$res = `$to_run`;
print $res

我希望打印\t - 即反斜杠字符和“t”字符。的确,如果我只是在bash中运行

echo '\t'

我看到\t。但是,perl脚本会打印制表符。

为什么制表工具在$res中展开?所有角色都是这样展开的?而且,最重要的是,如何阻止它扩展呢?

1 个答案:

答案 0 :(得分:5)

使用/bin/sh评估反引号,无论您可能想要使用哪种shell,而POSIX XSI-conformant version of echo implemented by sh都会将\t转换为标签。通过在echo '\t'内运行sh来自行尝试。

为避免此行为,请尝试在反对提示中使用printf '%s\n'代替echo