如何将加载的nodejs模块分配给Bash中的变量?

如何将加载的nodejs模块分配给Bash中的变量?

我还不懂 Bash 语言。我决定学习如何制作 NPM 模块。我通过文件中的连接来使用它。但后来我决定让通过控制台执行它成为可能。

示例:我运行该文件run.sh

这段代码将被执行

node -e 'require ("./ node_modules/@topus009/perf/x.js")'

但这段代码不会

var = $ {node -e "require ('./ node_modules/@topus009/perf/x.js')"}
error - bad substitution

它应该如何工作:

  • 在加载的模块内,函数被导出。
  • 加载模块。
  • 然后做一些bash脚本。
  • 然后我调用这个模块。

但我不知道如何获取该模块以供将来使用和启动。如何将模块传递给变量。 Stackoverflow 没有帮助。我已经达到了极限。

#!/bin/bash

#...code for parsing bash variables from command line (WORKS)

nm="./node_modules/@topus009/perf"
benchmarkStart=${node -e "require('${nm}/benchmarkStart.js')"} #(NOT WORKING - error - bad substitution)
benchmarkEnd=${node -e "require('${nm}/benchmarkEnd.js')"} #(NOT WORKING)

start=${node -e "${benchmarkStart()}"}
#...loop the target nodejs script file (WORKS)
end=${node -e "${benchmarkEnd(start)}"}

#...another module loading & execution to show perf comparison in terminal and show line chart

答案1

它不起作用,因为您使用了不正确的语法。你在做什么${...}bash参数扩展进行变量操作。例如:

foo="abc"
echo "${foo^^}"
# outputs ABC instead of abc 

要使其正常工作,请将其更改为反引号 ` ... ` 或$(...)

所以,它将是:

benchmarkStart=`node -e "require('${nm}/benchmarkStart.js')"`
or
benchmarkStart=$(node -e "require('${nm}/benchmarkStart.js')")

相关内容