LoginSignup
10
10

More than 5 years have passed since last update.

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

Posted at

最近書いている 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 にあるので参考に.

10
10
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
10
10