Spidermonkey JavaScript エンジンを使用してシェルから JavaScript を実行しており、ほとんどの機能が必要に応じて機能しています。
コマンドラインから変数を引数としてjavascriptに渡すことができるようにしたいのですが、これを行う方法を見つけることができませんでした。
例として、ファイル (data.dat) に保存されているデータからテキストを解析する JavaScript ファイル (myJs.js) がある場合、現在、通常の構文で JavaScript を呼び出します。
js -f myJs.js
JavaScript自体には、次のように、処理したいファイルからデータを取得するコマンドがあります。
var fileData = read("data.dat");
これは問題なく動作しますが、別のデータ ファイルに対して JavaScript を再利用したい場合は、新しいデータに対して実行するたびに JavaScript のファイル名を編集する必要があります。
私の質問は、ファイル名(または他の変数)をコマンドラインからjavascriptに渡し、javascript内から引数として取得する方法はありますか?
js -f myJs.js -- "othertData.dat"
ここで、javascript は値「otherData.dat」にアクセスできます。
var fileData = commandLine.argument[0];
// (I know commandLine is not an object and argument not a property, just illustrating what I want to do!);
これを行うことは単に不可能な場合があります。スクリプトにファイル名のリストを含む別のファイルを読み取らせることで、javascript を介してファイルをバッチ処理できますが、コマンド ラインからファイル名を直接渡す方がはるかに簡単です。
これに関する情報を広範囲に検索しましたが、spidermonkey 自体の引数を JavaScript に渡すことができるため、多少の混乱がありますが、変数の引数を bash スクリプトに渡すのと同様の方法で、変数をスクリプトに直接渡したいと考えています。
: myBashScript <myData1> <myData2>
可変引数は、番号付き引数配列に取得されます。
firstArgument=$1
これができない場合は、明確な回答なしにウェブ全体で議論されている同様の質問を見つけたので、その効果に対する権威ある声明が役立つかもしれません (ほとんどの場合、変数ではなく Spidermonkey 独自の引数を渡すことについて議論しています)。
ありがとう