環境
Ubuntu20.4
Ruby2.6
はじめに
「Linux環境でシェルスクリプトを書くことになったのだが、bashの文法はあまり詳しくないし、普段書きなれたRubyを使ってサクッと作れないだろうか・・・。」
「Rubyなら色々なgemが用意されているし、複雑な処理でもシンプルに記述できるんだけどな
・・・。」
なんて思ったときは、Rubyを使ってシェルスクリプトを作ることができるのです。シェルスクリプトにしなくても、Rubyプログラムとして、ruby hoge.rbで実行してもいいのだが、シェルスクリプトにすると、.hoge.shで実行することができます。だけの話と言えば、だけの話ではありますが。
中身はRubyの文法のままで、あたかも、bashで動いているようなスクリプトを作ることができます。また、Rubyで作っても、systemやIO.popenを使うことで、Linuxのコマンドを埋め込むこともできます。
内容
Rubyで記述する場合は、シバンにはbashを指定するのではなくRubyを指定します。そして、スクリプトファイルの拡張子はshにします。rbでも動くようではありますが。
#! /usr/bin/env bash # bash用
#! /usr/bin/env ruby # Ruby用
このようにして実行します。実行権限はつけてください。
$./hoge.sh
bashで動くわけではないので、Rubyで書いたスクリプトファイルをこのようにして実行することはできません。
$. hoge.sh
$source hoge.sh
$bash hoge.sh
bashで動かす場合の書き方です。
#! /usr/bin/env bash
echo "OK"
同じことをRubyで書くとこのようになります。
#! /usr/bin/env ruby
puts "OK"
Rubyで記述しても、スクリプトファイルの実行が、bashと同じコマンドで実行できるようになります。