我正在编写一个Node脚本,用于从Bash终端执行。它需要两个文件名,然后通过提示向用户询问如何处理它们。我使用yargs解析命令行参数,使用prompt-sync询问用户问题,这一切似乎都很好.
但是,当我将一个参数传送到我的脚本时,如下所示:
echo "file2.md" | .myscript.js --f1 file1.md这在比较file1.md和file2.md时起作用,我使用pipe-args和yargs来实现这一目标。但是当涉及到提示时,使用管道式的参数会干扰并阻止它们的工作。
我尝试把它放在我的脚本之外,隔离地测试它,同时使用prompt-sync和inquirer,并且将一个参数放入脚本中似乎也会影响提示符。
所以我很确定这不是特定的提示符包。
重新创造:
下面是我对提示同步(名为prompt-sync-test.js的文件)的测试:
#!/usr/bin/env node
const prompt = require("prompt-sync")({"sigint": true})
for (var i = 0; i < 5; i++) {
console.log("Going to bring up a prompt")
var result = prompt("This is a test -- enter something >");
console.log("Result", result)
}...when它工作:
运行./prompt-sync-test.js很好,每次都会问五个问题,打印结果。
$ ./prompt-sync-test.js
Going to bring up a prompt
This is a test -- enter something >1
Result 1
Going to bring up a prompt
This is a test -- enter something >2
Result 2
Going to bring up a prompt
This is a test -- enter something >3
Result 3
Going to bring up a prompt
This is a test -- enter something >4
Result 4
Going to bring up a prompt
This is a test -- enter something >5
Result 5...when它没有:
但是运行echo hello world | ./prompt-sync-test.js会打印第一个提示符的消息,但是输入的任何输入都会再次重复提示消息,输入任何先前的答案,比如(我输入的数字与上面描述的测试中相同的数字,并在每次输入后按enter ).
$ echo hello world | ./prompt-test.
js
Going to bring up a prompt
This is a test -- enter something >1
This is a test -- enter something >1
2
This is a test -- enter something >1
2
3
This is a test -- enter something >1
2
3
4
This is a test -- enter something >1
2
3
4
5
This is a test -- enter something >1
2
3
4
5在我的脚本中加入一些东西似乎会干扰提示符本身。
基本上,我希望能够使用脚本中的管道,但是像第一种情况一样具有提示性工作。我怎么才能让这事发生?
https://stackoverflow.com/questions/61487593
复制相似问题