V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
mocodo
V2EX  ›  Linux

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

  •  
  •   mocodo · 2015-08-12 18:13:41 +08:00 · 5249 次点击
    这是一个创建于 3397 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如:
    x = "echo x\\y\\z"
    eval $x
    输出是:xyz,而不是想要的x\y\z

    再比如:
    x = "echo x\\y\\z'a"
    eval $x
    执行出错,因为里面有个'。
    5 条回复    2015-08-12 21:47:08 +08:00
    RIcter
        1
    RIcter  
       2015-08-12 18:26:31 +08:00 via iPhone
    \\\\

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

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

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

    双引号的话,一开始 shell 解释就去掉了一层 \\,然后 eval 再解释一次就没了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2621 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:41 · PVG 23:41 · LAX 07:41 · JFK 10:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.