2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

はじめてシェルを書いたときにつまずいた所

Posted at

文字列に関して

【つまずいた点】
変数が文字列として認識されてしまう

【解決策】

× '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の後だと次のコマンドとして扱われてしまうので気をつける

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?