向Node.js脚本传递参数时出现问题
我的Node.js脚本在命令行和bash脚本中的运行方式不同。所有操作都通过命令行正常工作,但在bash脚本中运行时,无法识别第二个参数 我是否需要在bash脚本中以不同的方式传递参数 server.js提供了两个参数:向Node.js脚本传递参数时出现问题,node.js,bash,Node.js,Bash,我的Node.js脚本在命令行和bash脚本中的运行方式不同。所有操作都通过命令行正常工作,但在bash脚本中运行时,无法识别第二个参数 我是否需要在bash脚本中以不同的方式传递参数 server.js提供了两个参数: 1.命令(在本例中,通过mySQL更新表) 2.表(通过从API提取的数据更新的所需表) 命令行/脚本条目: node server.js -update-table table1 server.js: var args = process.argv.sli
1.命令(在本例中,通过mySQL更新表)
2.表(通过从API提取的数据更新的所需表) 命令行/脚本条目:
node server.js -update-table table1
server.js:
var args = process.argv.slice(2);
var command = args[0];
switch (command) {
case '-update-table':
var tableName = args[1];
switch (tableName) {
case 'table1':
tableUpdateFunction.table1();
break;
case 'table2':
tableUpdateFunction.table2();
break;
default:
console.log('ERROR: Unknown Table Name ' + tableName)
break;
}
break;
}
从脚本运行时的控制台(触发默认情况):
我认为您可能遇到了Windows行结束问题。如果使用某些Windows实用程序准备脚本文件,然后在类似Unix的环境中调用它,那么命令行以CR-LF序列(Windows)终止的事实将导致编译用于Unix环境的shell出现问题,因为CR将被视为普通字符 这有点难看,因为CR在一行的末尾是完全不可见的,只有在其他上下文中它的效果才可见。通过确保在任何输出中替换的文本具有以下可见字符,可以使CR可见。例如,如果将错误报告更改为:
console.log('ERROR: Unknown Table Name "' + tableName + "'")
然后你可能会看到:
"RROR: Unknown Table Name "table1
请注意,
ERROR
中的E
已被双引号覆盖;这是因为table1
末尾的CR会使光标在打印以下“
之前移回左边距。您可以发布脚本吗?使用console.log打印tableName
的类型(tableName的类型)
在默认情况下。将解释您的问题。我不明白为什么有人会否决您的问题,因为它似乎已经到位(打印输出需要仔细考虑)@goodvibration:你的链接答案如何解释这个问题?链接答案是关于jQuery的每个的一个方面。谢谢!尝试从Windows移植我的服务器,所以这正是我的问题。
"RROR: Unknown Table Name "table1