簡単な対話型データ入力(1)

whileループとcase分岐により、誤った入力をしても異常終了しない(しにくい)データ入力スクリプトを作成してみました。

1文字目がdまたはDで始まる文字列を入力すると、日付設定シーケンスへ分岐されます。同様にeまたEで始まる文字列を入力すると、終了シーケンスへ分岐されます。

日付設定を選択すると同じディレクトリ内のdataset.shが実行され、変数${date}に値が入ります。その値に応じて特定のディレクトリのHTML文書が表示され、かつedit_id.shへと引き継がれます。

一方、終了を選択すれば終了します。

それ以外のキーを打ってしまった場合は「もう一度お願いします」と表示されてループの最初に戻ります。

#! /bin/bash

 while :
 do
  printf "D/d) 日付設定 E/e)終了\n"
  nonewline " "
  read RESP
  char=`echo $RESP | cut -c1`
  case $char in
# 日付設定のシーケンス
   d|D) 
    . ./dateset.sh 
    firefox ./印刷用HTML/${date}raw.html &
    export keyword=${keyword} 
    export date=${date} 
    export input_date=${input_date}
    ./edit_id.sh
     ;;

# 終了のシーケンス
   e|E)
   kill -9 `pgrep firefox`
   break
   ;;

# それ以外
   ?) echo "もう一度お願いします" ;;
  esac
 done

dateset.shやedit_id.shの中でも同様のループを利用して重層的な構造となっていますので、今後数回にわたって紹介して行きます。