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

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

  •  
  •   mocodo · Aug 12, 2015 · 6520 views
    This topic created in 4104 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   ·   1051 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:04 · PVG 03:04 · LAX 11:04 · JFK 14:04
    ♥ Do have faith in what you're doing.