node.js exec命令引用

问题描述

我在Linux上有此命令来获取我的IP地址:

connmanctl services ethernet_00142d000000_cable | sed -n -e '/IPv4 =/s/.*Address=\([^,]*\).*/\1/p'

我想在使用子进程的exec函数中使用它:

const exec = require('child_process').exec;
exec(' connmanctl services ethernet_00142d000000_cable | sed -n -e '/IPv4 =/s/.*Address=\([^,]*\).*/\1/p' ',(error,stdout,stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

我什么也没有,我不知道如何执行带引号的命令。

感谢您的帮助

解决方法

最简单的选择之一是将命令用双引号引起来,但这可能会导致ESlint错误,因为混用了双引号和单引号。

const exec = require('child_process').exec;
exec(" connmanctl services ethernet_00142d000000_cable | sed -n -e '/IPv4 =/s/.*Address=\([^,]*\).*/\1/p' ",(error,stdout,stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

另一个选择是使用模板文字: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

 const exec = require('child_process').exec;
    exec(` connmanctl services ethernet_00142d000000_cable | sed -n -e '/IPv4 =/s/.*Address=\([^,]*\).*/\1/p' `,stderr) => {
      if (error) {
        console.error(`exec error: ${error}`);
        return;
      }
      console.log(`stdout: ${stdout}`);
      console.log(`stderr: ${stderr}`);
    });

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...