当我回显 `-e` 参数时会发生什么?

当我回显 `-e` 参数时会发生什么?

正如你所看到的,我创建的内容index.php如下:

$ echo -e "<?php passthru(\$_POST[1])?>\r<?php echo 'A PHP Test ';" > index.php

进而:

$ cat index.php
<?php echo 'A PHP Test ';?>

但:

$ cat -e index.php
<?php passthru($_POST[1])?>^M<?php echo 'A PHP Test ';$

我该如何解释呢?

答案1

男人回声

-e
enable interpretation of backslash escapes
If -e is in effect, the following sequences are recognized:
\r
carriage return

人猫

-e
equivalent to -vE
-E, --show-ends
display $ at end of each line
-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB

据我了解,\r表达式返回回车符,因此您在返回后回显所有内容,这就是为什么当您简化输出时,cat index.php输出是<?php echo 'A PHP Test ';?>.

当您cat使用该选项时,当存在非打印语句时,-e您将打印该选项,并且在该行的最末尾,就像该选项一样^M$-E

相关内容