ロードされた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')")

おすすめ記事