【发布时间】:2018-03-01 20:00:12
【问题描述】:
我正在尝试将输入作为一行传递给用户输入提示,但我很难弄清楚如何正确执行。
具体来说,我正在尝试使用 npm adduser 登录 npm(npm login 是它的别名)
当它是一个奇异值时它可以工作,但这只能让我到目前为止:echo exampleuser| npm adduser
Username: exampleuser
Password:
Password: npm ERR! cb() never called!
但不幸的是,当我尝试将多个命令添加在一起时,它会出错。例如:echo 'exampleuser examplepassword ex@email.com'| npm adduser或echo 'exampleuser\r\nexamplepassword\r\nex@email.com'| npm adduser或echo 'exampleuser&& echo examplepassword&& echo ex@email.com'| npm adduser等...
按照以下方式返回错误
Username: 'exampleuser examplepassword'
npm WARN Name must be lowercase
Username:
Username: npm ERR! cb() never called!
任何建议将不胜感激。
【问题讨论】:
-
npm据我所知是批处理文件而不是控制台应用程序。因此,您不能通过将echo的字符串输出重定向来处理可执行文件的 stdout 到 stdin 来运行它。您需要使用命令call使用适当的参数调用npm.bat。在命令提示符窗口call /?中运行以获取有关此命令的帮助。并阅读npm的文档,因为您显然没有这样做。建议在批处理文件中运行脚本和可执行文件,不仅使用文件名,而且使用文件名 + 文件扩展名(如果可能还使用路径)。那么你就会看到你的错误。 -
@Mofi 冷静的冠军。我已经广泛阅读了
npm文档,但一定错过了将npm称为批处理文件的部分——请指点我吗? -
我很冷静。我从来没有安装过
npm包。我只知道npm是 Windows 上的一个批处理文件(很可能是 Linux 上的一个 shell 脚本),因为在使用带有Windows npm batch file的 www 搜索引擎找到的批处理文件中阅读了许多关于 Windows 上npm使用问题的页面作为搜索字符串。我过去写过一次this answer。看起来npm批处理脚本包目前写得不好。我想npmshell 脚本包要好得多。 -
如果npm Documentation确实没有明确包含
npm是一个带有文件扩展名的批处理文件的信息??? (bat 或 cmd)在 Windows 和 ??? (sh/bash/ksh/...) 脚本,使用npm的人应该真正告知本网站的作者,对于任何操作系统上的脚本编写者来说,这个非常重要的事实也应该在文档中提及,例如在@ 987654323@ -
echo 'text'按字面意思返回文本'text',包括撇号;因此你应该使用echo text,并确保没有尾随空格,这也会被返回;所以对于管道,它必须是:echo text| npm(虽然我不知道npm是否从控制台输入读取数据)...