-1

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

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

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

echo '\t'

我明白了\t。但是,perl 脚本会打印制表符。

为什么制表符在中展开$res?什么所有的字符都是这样展开的?而且,最重要的是,我如何阻止它扩展?

4

1 回答 1

5

反引号是使用 评估/bin/sh的,无论您可能想要使用什么外壳,它都是通过转换为选项卡实现的符合 POSIX XSI 的版本。echosh通过内部\t运行自己尝试一下。echo '\t'sh

为了避免这种行为,尝试在反引号中使用printf '%s\n'而不是。echo

于 2013-10-07T00:24:38.463 回答