Help us understand the problem. What is going on with this article?

Bashスクリプトを便利にする

More than 5 years have passed since last update.

最近書いている 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

より詳しくは

imosh を使った stelnet 等のスクリプトが bin にあるので参考に.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away