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

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

  •  
  •   mocodo · Aug 12, 2015 · 6515 views
    This topic created in 4102 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
    RIcter
    Aug 12, 2015 via iPhone
    1
    \\\\

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

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

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

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