npm Node.js上的CLI应用程序如何通过child_process [duplicate]将选项值作为Shell命令的参数传递

6rqinv9w  于 2023-01-21  发布在  Node.js
关注(0)|答案(1)|浏览(139)
    • 此问题在此处已有答案**:

Usage of the backtick character (`) in JavaScript(10个答案)
3天前关闭。
这篇文章是编辑和提交审查3天前。
如何将--url选项的值作为Wget命令的参数传递

#!/usr/bin/env node
'use strict';

const commander = require('commander');
const { exec } = require("child_process");
const program = new commander.Command();

program
  .option('-u, --url <value>', 'Website address');

program.parse(process.argv);

const options = program.opts();

if (options.url) {
        exec("wget ${options.url}", (error, stdout, stderr) => {
            if (error) {
                console.log(`error: ${error.message}`);
                return;
            }
            if (stderr) {
                console.log(`stderr: ${stderr}`);
                return;
            }
            console.log(`stdout: ${stdout}`);
        });
}

输出:

node app.js --url ff99cc.art
error: Command failed: wget ${options.url}
/bin/bash: line 1: ${options.url}: bad substitution
  • -url值必须作为wget的参数传递,这样当您执行节点命令app.js--url www.example.com时,她正在执行wget example.com。example.com,she was doing wget example.com.
    • 已解决**谢谢spyrospal和ibrahim tanyalcin问题是如何使用字符串插值来格式化wget命令。这里提到的应该使用反引号(')字符而不是双引号:
exec(`wget ${options.url}`, (error, stdout, stderr) => {
lawou6xi

lawou6xi1#

问题是如何使用字符串插值来格式化wget命令。如前所述,here应该使用反号(')字符,而不是双引号:

exec(`wget ${options.url}`, (error, stdout, stderr) => {

相关问题