当前位置: 首页 > 知识库问答 >
问题:

在nodejs中逐字获取命令行参数

胡志
2023-03-14

我想按照他们键入的方式获取用户命令。唯一允许的区别是,可以代替“”,反之亦然。

例如,如果用户键入。

node test.js git commit -m "first message"

我想在控制台上记录以下内容之一。

You typed: git commit -m 'first message' //line A
You typed: git commit -m "first message" //line B

但不可接受:

You typed: "git" "commit" "-m" "first message" //line C
You typed: 'git' 'commit' '-m' 'first message' // line D

如上所述,引号可以不同于用户提供的引号(可以替换,反之亦然,如第B行),但它们不能放错位置(如第C行和第D行)。希望这是清楚的。

编辑:编辑整个问题以避免混淆。

共有1个答案

笪智志
2023-03-14

你的问题不是很清楚,但是假设你只是想记录你收到的论点,你可以这样做:

let args = [];
// Get program arguments
process.argv.forEach((val, index) => {
if (index > 1)
    args.push(val);
});
let command = args.join(" ");
console.log("You typed: ", command);

但请注意,在打印输出时,您将丢失引号,正如@Joe在注释中所说的,shell在将它们传递给节点之前对其进行替换

 类似资料:
  • ; GetParameters ; 输入,无 ; 输出,堆栈顶 (替换,例如 whatever) ; 不改变其它变量值。 Function GetParameters Push $R0 Push $R1 Push $R2 Push $R3 StrCpy $R2 1 StrLen $R3 $CMDLINE ;Check for

  • 问题内容: 我正在使用eclipse,因此将运行配置设置为 -Dspring-boot.run.arguments =-person.name = firstName 但是,当运行我的应用程序时,出现异常,因为“无法解析值“ $ {person.name}”中的占位符“ person.name”” 问题答案: 这段代码可以正常工作(Spring Boot 2.1.4): 命令行: 输出:

  • Go 语言中除了可以通过 os 包获取命令行参数以外,还可以通过 flag 包获取命令行参数 package main import ( "flag" "fmt" ) func main() { /* flag.Xxxx(name, value, usage) 第一个参数: 命令行参数名称 第二个参数: 命令行参数对应的默认值 第三个参数: 命令行参数对应的

  • C 语言中的命令行参数 argc:argv 中保存数据的个数 argv:默认情况下系统只会传入一个值,这个值就是 main 函数执行文件的路径 我们可以通过配置开发工具,或者命令行运行时以空格+参数形式传递其它参数 注意点: 无论外界传入的是什么类型, 我们拿到的都是字符串类型 #include <stdio.h> int main(int argc, const char * argv[])

  • 12.4.1 os 包 os 包中有一个 string 类型的切片变量 os.Args,用来处理一些基本的命令行参数,它在程序启动后读取命令行输入的参数。来看下面的打招呼程序: 示例 12.11 os_args.go: // os_args.go package main import ( "fmt" "os" "strings" ) func main() {

  • 为了方便起见,我们支持在运行 Blade 应用的时候修改一些配置,比如我在运行时指定端口: java -jar blade-app.jar --server.port=9088 当然还支持一些其他的命令行参数,看看下面的表格: 命令行参数 描述 示例 server.address 服务地址,默认是本机 0.0.0.0 回环地址 --server.address=192.168.1.100 serv