为了熟悉javascript并最终探索可能解析js脚本,我正在尝试将bash脚本转换为javascript(意图运行js的方式与运行bash相同)脚本)。到目前为止,我已经能够在js中复制大部分bash功能,除了参数提示。
例如,在bash中,我以这种方式提示脚本用户参数:
read -p "Are you a god? (Y/N) " ANSWER
表示用户输入的任何输入都将存储在变量ANSWER
中从我可以继续使用我的脚本:
if [ "$ANSWER" = "Y" ]; then echo "You lying puny human"; else echo "Then die!"; fi
现在,我已经查看了javascript提供的各种选项,如readline模块或提示模块,但除非我遗漏了文档中提供的示例中的内容
https://nodejs.org/api/readline.html#readline_readline用于readline和 https://github.com/flatiron/prompt提示
看起来它会做我正在寻找的东西但是当我在实际的脚本中尝试时,我似乎无法将我的变量放在提示/ readline函数的范围之外
例如,如果我尝试这个:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('What do you think of Node.js? ', (answer) => {
// TODO: Log the answer in a database
console.log('Thank you for your valuable feedback:', answer);
rl.close();
});
echo(answer);
我会收到错误,说明回声中使用的答案变量未声明
如果我尝试这样做:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var result
rl.question('What do you think of Node.js? ', (answer) => {
result = answer
console.log('Thank you for your valuable feedback:', answer);
rl.close();
});
echo(result);
当提示出现时,echo将被解析,我会在我的提示行看到未定义的回显,然后我将能够为提示提供一个值,然后一旦提示被解析,脚本将结束
我的示例使用的是readline模块,但我的提示
几乎得到了相同的结果所以在这个长篇背景之后重新提出我的问题: 我可以在javascript中使用read -p得到一些相同的行为,因为我有一些脚本正在运行,然后它会暂停以提示用户然后继续使用脚本的其余部分吗?