いろんな言語をCLI引数でちょこっと実行する
CLIの引数でコードを実行
php
コマンドには便利な引数があって、 php -r '何かしらのPHP処理'
とシェルから実行すると、その引数に渡したコードの文字列がPHPコードとして実行される。
インタラクティブシェルを起動しないでもコマンドラインからそのまま実行できて、ちょっとした真偽値のチェックや関数の動きを見たい時に大変便利である。
特にNode.jsやRubyについてはこれまでメインで使ってきたPHPと比べ、知らない書き方をすることも多いのでちょっと動かしたいことはよくある。
この記事ではPHP、Node.js、Rubyでそれぞれどう実行したら良いのかをまとめる。
PHP
マニュアルより引用
php [options] -r code [[--] args...]
例:
$ php -r 'echo "Hello world\n";' Hello world > php -r '$a = ["PHP", "Node.js"]; var_dump($a);' array(2) { [0]=> string(3) "PHP" [1]=> string(7) "Node.js" }
Node.js
マニュアルより引用
node [options] [v8-options] [-e string | script.js | -] [--] [arguments ...]
要するに、 node -e 'nodejsの処理'
としてあげれば良い。
例:
$ node -e 'console.log(process.version)' v12.13.1 $ node -e 'console.trace("Hello world")' Trace: Hello world at [eval]:1:9 at Script.runInThisContext (vm.js:116:20) at Object.runInThisContext (vm.js:306:38) at Object.<anonymous> ([eval]-wrapper:9:26) at Module._compile (internal/modules/cjs/loader.js:959:30) at evalScript (internal/process/execution.js:80:25) at internal/main/eval_string.js:23:3
Ruby
マニュアルより引用
ruby [--copyright] [--version] [-SUacdlnpswvy] [-0[octal]] [-C directory] [-E external[:internal]] [-F[pattern]] [-I directory] [-K[c]] [-T[level]] [-W[level]] [-e command]
Node.jsと同じく、 -e 'Rubyの処理'
で実行できる。
例:
$ ruby -e 'unless(false) then puts "Hello world" end' Hello world $ ruby -e 'p nil == 1' false
Rubyは他の言語と違って別の行で then
やら end
やらを書くことが多いのでちょいと戸惑った。
Rails Runner
RubyはRailsを使う他にも、Runner を使う方法がある。 取引先の上長の方に教えてもらった。感謝感激。
$ bundle exec rails r 'puts "Hello world"' Hello world
さいごに
以上である。
ちょっとしたテクニックではあるが、だれかの参考になったら嬉しい。