最近書いている imosh の紹介です.
Bashはほとんどの環境でインストールされているので,プログラムを配布するときのインストーラー等の簡単なスクリプトとして使うのに非常に便利で,多くの場面で使われています.しかしながら,Bashは単体では不便な言語です.そこで imosh を開発しています.
導入
imosh本体を開発中のスクリプトと同じディレクトリに配置します.以下が imosh を用いた最小のスクリプトです.
#!/bin/bash
source "$(dirname "${BASH_SOURCE}")"/imosh || exit 1
eval "${IMOSH_INIT}"
この時点でスクリプトを安全に書くのに便利な機能(未定義変数に対する参照の検出する機能,コマンドが異常終了した時にスタックトレースを表示し終了する機能)が追加されます.
フラグの追加
imosh はスクリプトをフラグで制御可能にします.以下が例です.
#!/bin/bash
source "$(dirname "${BASH_SOURCE}")"/imosh || exit 1
DEFINE_bool bool_flag false 'Boolean flag.'
DEFINE_int int_flag 0 'Integer flag.'
DEFINE_string string_flag '' 'String flag.'
eval "${IMOSH_INIT}"
if (( FLAGS_bool_flag )); then
echo 'bool_flag is true!'
fi
echo "int_flag is ${FLAGS_int_flag}!"
echo "string_flag is ${FLAGS_string_flag}!"
このようなプログラムはコマンドラインでは以下のように使えます.
$ myscript.sh --bool_flag --int_flag=12345 --string_flag=foo