Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
mocodo
V2EX  ›  Linux

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

  •  
  •   mocodo · Aug 12, 2015 · 6051 views
    This topic created in 3954 days ago, the information mentioned may be changed or developed.
    比如:
    x = "echo x\\y\\z"
    eval $x
    输出是:xyz,而不是想要的x\y\z

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

    \\\'
    ETiV
        2
    ETiV  
       Aug 12, 2015
    $x = "echo 'x\\y\\z';";
    eval($x);

    echo 的东西单引号一下?
    realpg
        3
    realpg  
    PRO
       Aug 12, 2015
    x = "echo x\\y\\z"
    eval $x

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

    双引号的话,一开始 shell 解释就去掉了一层 \\,然后 eval 再解释一次就没了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5971 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 397ms · UTC 02:30 · PVG 10:30 · LAX 19:30 · JFK 22:30
    ♥ Do have faith in what you're doing.