Hitachi

Advanced Shell 


3.8.5 adshechoコマンドまたはadshreadコマンドがエラー終了した場合の対処

adshechoコマンドまたはadshreadコマンドがエラー終了した場合でも,再実行によって成功する場合があります。再実行する場合は次の例を参考に,adshechoコマンドまたはadshreadコマンドを再実行するジョブ定義スクリプトを作成してください。

#! /opt/jp1as/bin/adshexec
 
###
#adshreadコマンドを実行する関数
#引数  :応答要求メッセージ
#終了コード:0 (正常終了)
#        1 (リトライ可能なエラーで終了)
#        2 (リトライ不可能なエラーで終了)
###
 
func_adshread()
{
    adshread ans "$1"
 
  case "$?" in
    # 正常終了
    0 )             return 0 ;;
    # リトライ可能なエラーで終了した場合
    3 | 4 | 6 | 8 ) return 1 ;;
    # 上記以外のエラーで終了
    * )             return 2 ;;
  esac
}
 
###
### スクリプトの本体
###
 
#
# ジョブとして実行する処理を記述
#
 
###
### オペレータの応答を待って処理を続行する
###
 
  while :
  do
 
    #adshreadコマンドを実行する関数を呼び出す。
    func_adshread "処理を続行しますか?(Y/N)【ホスト名:$HOSTNAME, スクリプト名:$0】"
 
    if [ $? = 0 ]; then       #adshreadコマンドが正常に終了した
      break                   #ループを抜ける
    elif [ $? = 1 ] ; then    #adshreadコマンドがリトライ可能なエラーで終了した
      continue                #adshreadコマンドを再実行する
    else                      #adshreadコマンドがリトライ可能なエラー以外で終了した
      echo "adshreadコマンドがエラー終了しました。"
      exit 1                  #スクリプトを終了する
    fi
  done
 
###
### adshreadが受け取った応答に応じて処理を行う
###
 
  if [ "$ans" = "Y" ] ; then
    adshecho "「Y」が入力されました。処理を続行します。"
  elif [ "$ans" = "N" ] ; then
    adshecho "「N」が入力されました。処理を終了します。"
    exit 1                       #スクリプトを終了する
  else
    adshecho "指定以外の応答が入力されました。処理を終了します。"
    exit 1                       #スクリプトを終了する
  fi