我还不懂 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')")