eval 执行的字符串中有特殊字符怎么处理?
- 0次
- 2021-07-09 21:25:13
- idczone
比如:
x = "echo x\\y\\z"
eval $x
输出是:xyz,而不是想要的x\y\z
再比如:
x = "echo x\\y\\z'a"
eval $x
执行出错,因为里面有个'。
\\\\
\\\'
$x = "echo 'x\\y\\z';";
eval($x);
echo 的东西单引号一下?
x = "echo x\\y\\z"
eval $x
这个不报错?
1L + 1 ,遇到这种情况只需要加一层反斜杠就好了。。
换成单引号就行
eval 'echo x\\y\\z'
x\y\z
双引号的话,一开始 shell 解释就去掉了一层 \\,然后 eval 再解释一次就没了