将参数传递给Node.js脚本的问题

问题描述 投票:-1回答:1

我的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
node.js bash
1个回答
0
投票

我认为您可能正在遇到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导致光标在打印以下"之前移回左侧空白。

© www.soinside.com 2019 - 2024. All rights reserved.