代码之家  ›  专栏  ›  技术社区  ›  Steven Beaupré

如何在双引号内使用双引号

  •  3
  • Steven Beaupré  · 技术社区  · 10 年前

    考虑以下内容:

    var child = require('child_process');
    var res = child.execSync("df -l | awk '{t += $2} END {printf "%d G\n", t / 2^20 + 0.5}'");
    

    我得到一个语法错误( " 在里面 printf 这里有过错)。

    我试图用 \" ,但无济于事。

    使用: "df -l | awk '{t += $2} END {printf \"%d G\n\", t / 2^20 + 0.5}'" .

    我得到:

    awk: cmd. line:1: {t += $2} END {printf "%d G
    awk: cmd. line:1:                       ^ unterminated string
    

    这里的语法正确方法是什么?

    1 回复  |  直到 10 年前
        1
  •  7
  •   Maxim Mazurok    10 年前

    var res = child.execSync("df -l | awk \'{t += $2} END {printf \"%d G\\n\", t / 2^20 + 0.5}\'");

    工作,测试。

    问题是 \n 。应该是 \\n 。您可以像这样调试任何shell任务: console.log(SHELL_COMMAND) 然后手动运行输出字符串。

    例如,这:

    var child = require('child_process');
    var cmd = "df -l | awk '{t += $2} END {printf \"%d G\n\", t / 2^20 + 0.5}'";
    console.log(cmd)
    var res = child.execSync(cmd);
    

    将在控制台中输出并尝试运行以下操作:

    df -l | awk '{t += $2} END {printf "%d G
    ", t / 2^20 + 0.5}'
    

    这毫无意义。

    推荐文章