如果我像这样运行一个简单的 perl 脚本(在 linux 上,使用 bash),
$to_run = q(echo '\t');
$res = `$to_run`;
print $res
我希望这\t
将被打印 - 即反斜杠字符和“t”字符。确实,如果我只在 bash 中运行
echo '\t'
我明白了\t
。但是,perl 脚本会打印制表符。
为什么制表符在中展开$res
?什么所有的字符都是这样展开的?而且,最重要的是,我如何阻止它扩展?
反引号是使用 评估/bin/sh
的,无论您可能想要使用什么外壳,它都是通过转换为选项卡实现的符合 POSIX XSI 的版本。echo
sh
通过内部\t
运行自己尝试一下。echo '\t'
sh
为了避免这种行为,尝试在反引号中使用printf '%s\n'
而不是。echo