我的Node.js脚本在命令行之间和bash脚本中的运行方式不同。一切都可以通过命令行正常运行,但是在bash脚本中运行时,第二个参数无法识别。
我需要在bash脚本中传递不同的参数吗?
server.js提供了两个参数: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;
}
从脚本运行时控制台(触发器默认情况):
ERROR: Unknown Table Name table1
我认为您可能正在遇到Windows行尾问题。如果您使用Windows实用程序准备了脚本文件,然后在类似Unix的环境中调用了脚本文件,则该命令行以CR-LF序列(Windows)终止的事实将导致编译用于Windows Server 2003的shell出现问题。 UNIX环境,因为CR将被视为普通字符。
这很难看,因为CR在行尾完全不可见,仅在其他情况下才可见。您可以通过确保在任何输出中替换的文本具有以下可见字符来使CR可见。例如,如果您将错误报告更改为:
console.log('ERROR: Unknown Table Name "' + tableName + "'")
然后您可能会看到此:
"RROR: Unknown Table Name "table1
请注意,E
中的ERROR
已被双引号覆盖;这是因为table1
末尾的CR导致光标在打印以下"
之前移回左侧空白。