文字列に関して
【つまずいた点】
変数が文字列として認識されてしまう
【解決策】
× 'fuga=$hoge'
○ "fuga=$hoge"
''で囲うのではなく""($を評価してくれる)で囲う
mongoに関して
【つまずいた点】
mongoにjsのスクリプトを流すとき
mongo collectionName hoge.js arg
という書き方だとjsファイルに引数argが渡せない(failed to load: arg)
【解決策】
mongoの--evalオプションを使う
mongo collectionName --eval "INPUT='$CODE'" hoge.js
こうすれば、INPUTという変数がhoge.jsの中で使える。
--eval: 引数をJSとして評価してくれるオプション
nodeに関して
【つまずいた点】
シェル上でnodeを実行したいけど、nodeコマンドをだけだと対話モードになるので、例えば以下のような書き方はダメ
× node JSON.stringify($data)
【解決策】
ヒアドキュメントを使う
node << EOS
JSON.stringify($data);
EOS
<< EOS が渡されると、次のEOSまでの間が標準入力として扱われる
ヒアドキュメントに関して
【つまずいた点】
ヒアドキュメント内で出力された内容をファイルに出力したい
【解決策】
node << EOS > file.txt
var json =JSON.stringify($data);
console.log(json);
EOS
2個目のEOSの後だと次のコマンドとして扱われてしまうので気をつける