shのステップ制御
shのステップ制御
インストールスクリプトや、試験スクリプト作成時、エラーが起きた行を修正し、エラーの行から再実行したい場合がないだろうか。
そんな時、一部をコメントアウトしたり、コピペしたりしていませんか。
そんな時に役立つshのステップ実行用関数。
作り方
shスクリプトファイルをfooとする。
sh スクリプト
- s && 試験コード1
- s && 試験コード2
- ...
実行方法
- foo -s 23
ステップ23 から実行。
先頭にs && を追加するのが大変とは言え、個別にコメントを入れるよりはマシ。
コマンド全体を文字列として受け取り、行単位に実行する方法もあるが、大掛かりになり過ぎるかもしれない。
s関数
_start=0 _end=0 _to=0 s (){ _step=$(( $_step + 1)) echo "step $_step" [ $_step -lt $_start ] && return 0 [ $_step -gt $_end ] && return 0 return 1 } # 引数処理 handleopts (){ while getopts hs:e: OPT ; do case $OPT in h) usage ; exit 0;; s) _start=$OPTARG ;; e) _end=$OPTARG ;; *) usage ;; esac done shift $(( $OPTIND - 1 )) } usage(){ echo "usage: cmd [options] params..." }