shell 在Node.js中使用&&运算符在一行中执行两个命令时出错

i2loujxw  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(92)

虽然cd ./tools/darwin/ && ./adb在我的mac终端工作,
我的node.js应用程序与这段代码

const CHANGE_DIRECTORY_COMMAND = "cd ./tools/darwin/"
const EXECUTE_ADB_COMMAND = "./adb"

if(platform === "darwin") {
  exec(`${CHANGE_DIRECTORY_COMMAND} && ${EXECUTE_ADB_COMMAND}`, (error, stdout, stderr) => {
    if (error) {
      console.error(`Error executing the adb file: ${error}`);
      return;
    }

    if (stdout) {
      console.log(`Standard output: ${stdout}`);
    }

    if (stderr) {
      console.error(`Standard error: ${stderr}`);
    }
  });
}

给出了这个误差,
Error executing the adb file: Error: Command failed: cd ./tools/darwin/ && ./adb
此外,这段代码工作得很好,

const { exec } = require("child_process");

let commandOne = "ls -l"; // display all files in current directory with  (-l) long format
let commandTwo = "whoami"; // print the current user
let commandThree = "pwd"; //print the name of current directory

exec(`${commandOne} && ${commandTwo} && ${commandThree}`, (error, stdout, stderr) => {
    if (error) {
        console.log(`error: ${error.message}`);
        return;
    }
    if (stderr) {
        console.log(`stderr: ${stderr}`);
        return;
    }
    console.log(`Output: ${stdout}`);
});
uyto3xhc

uyto3xhc1#

cd ./tools/darwin/ && ./adb是两个不同的命令,每个命令都将执行 * 无论你在哪里 *。

const { exec } = require('child_process');

// const CHANGE_DIRECTORY_COMMAND = "cd ./tools/darwin/"
// const EXECUTE_ADB_COMMAND = "./adb"

const CHANGE_DIRECTORY_COMMAND = '/tools/darwin/'
const EXECUTE_ADB_COMMAND = 'adb'

//  exec(`${CHANGE_DIRECTORY_COMMAND} && ${EXECUTE_ADB_COMMAND}`, (error, stdout, stderr) => {
//  });

exec(EXECUTE_ADB_COMMAND, { cwd: CHANGE_DIRECTORY_COMMAND}, (error, stdout, stderr) => {
});

相关问题