私はまだ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')")