【发布时间】:2021-03-11 07:58:33
【问题描述】:
如何在 node.js 应用程序中获取原始命令行参数, 给出这个示例命令:
node forwardwithssh.js echo "hello arguments"
process.argv 将是 [ "node", "/path/to/forwardwith.js", "echo", "hello arguments" ]
并且没有办法从中重建原始的echo "hello arguments"(即join(" " 不会放回引号)。
我想要脚本名称后面的整个原始原始字符串。
使用"$*" 在 bash 脚本中很容易获得我想要的东西,是否有任何等效的方法可以在 node.js 中获得它?
注意:特别的目的是接收要在其他地方执行的命令(例如通过 ssh)
【问题讨论】:
-
这个模块应该可以做你想做的:npmjs.org/package/minimist
-
无法判断原始参数是否指定为
"hello arguments"、'hello arguments'或hello\ arguments。这些在 bash 中都是一样的。您是否只想始终假设带有空格的 arg 最初是用双引号引起来的?很容易看出这个空间一定是被某种方式转义了,因为你得到一个 arg 而不是两个“hello arguments”。 -
你可以引用你所有的参数
process.argv.map(function(arg){ return '"' + arg + '"'; });。这会给你:"node" "forwardwithssh.js" "echo" "hello arguments",这在 bash 中与你的原始命令完全相同。 -
@BrianGlaz minimist 也有同样的问题,你可以在
--之后看到参数也被解析了。 @Paulpro 我可以为所有内容添加引号,我想将原始参数作为要在其他地方执行的命令转发 -
bash 中的 @Paulpro "$*" 确实为您提供了确切的原始字符串(我需要它,因为它是另一个命令),而不仅仅是在任何地方加上引号
标签: node.js command-line