qshinoの日記

Powershell関係と徒然なこと

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..."
}