eval 执行的字符串中有特殊字符怎么处理?

2015-08-12 18:13:41 +08:00
 mocodo
比如:
x = "echo x\\y\\z"
eval $x
输出是:xyz,而不是想要的x\y\z

再比如:
x = "echo x\\y\\z'a"
eval $x
执行出错,因为里面有个'。
5095 次点击
所在节点    Linux
5 条回复
RIcter
2015-08-12 18:26:31 +08:00
\\\\

\\\'
ETiV
2015-08-12 18:34:20 +08:00
$x = "echo 'x\\y\\z';";
eval($x);

echo 的东西单引号一下?
realpg
2015-08-12 19:48:32 +08:00
x = "echo x\\y\\z"
eval $x

这个不报错?
flowfire
2015-08-12 20:29:47 +08:00
1L + 1 ,遇到这种情况只需要加一层反斜杠就好了。。
SoloCompany
2015-08-12 21:47:08 +08:00
换成单引号就行
eval 'echo x\\y\\z'
x\y\z

双引号的话,一开始 shell 解释就去掉了一层 \\,然后 eval 再解释一次就没了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/212741

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX